zoukankan      html  css  js  c++  java
  • tensorflow 关于 矩阵 运算 + 符号得含义。 2维 数组 + 1纬数组, 就是每一行都 加一边 1纬数组。 呵呵


    小锋子Shawn(403568338)  13:51:23
    mnist.training.images?
    墨须(964489899)  13:51:27
    我的图片是100*100的,该怎么兼容。  
    小锋子Shawn(403568338)  13:51:33
    你取一个,然后显示就好。
    墨须(964489899)  13:51:38
    恩恩
    黑羽毛(82878247)  13:51:57
    把你的图片展成1维的100*100
    小锋子Shawn(403568338)  13:52:10
    demo里面数据怎么处理的,你要找突破口
    墨须(964489899)  13:52:12
    这样阿。  那怎么把自己写的图片  搞成训练集呢?
    小锋子Shawn(403568338)  13:52:17
    到那里就自己load
    黑羽毛(82878247)  13:52:24
    官方教程中784改成10000就ok了
    黑羽毛(82878247)  13:52:54
    分几类自己就把10该几就ok

    墨须(964489899)  13:53:00
    问题一大堆, 具体格式 。 所以必须找一个demo 才敢弄。 或者至少把代码先过一边
    墨须(964489899)  13:53:26
    你们都是高手, 
    黑羽毛(82878247)  13:53:33
    你要识别图片中的什么呢
    墨须(964489899)  13:54:02
    还没想好。 就是自己随便画点东西,然后来识别。
    小锋子Shawn(403568338)  13:54:30

    黑羽毛(82878247)  13:54:34
    首先要确定分几类
    黑羽毛(82878247)  13:54:53
    用cnn应该是比较好的方法
    小锋子Shawn(403568338)  13:54:55
    其实问题还是有的,就是一次性读入所有数据,图像大了就不现实
    黑羽毛(82878247)  13:57:17
    图像太大可以用感知机进行特征学习,实现降维,然后在用cnn
    小锋子Shawn(403568338)  13:59:31
    [未知表情]他看到softmax,那就看完demo了,差不多了,然后逐步看就好。
    小锋子Shawn(403568338)  13:59:48
    用print看数据怎么处理。
    黑羽毛(82878247)  14:01:45
    看什么数据
    黑羽毛(82878247)  14:02:02
    tf变量的必须要先run才行
    小锋子Shawn(403568338)  14:02:37
    print数据的shape
    黑羽毛(82878247)  14:03:52
    那就试试print(xxx.shape)
    墨须(964489899)  14:04:03
    哦。  
    墨须(964489899)  14:05:36
    softmax 在的输入变量应该是tf.matmul(x,W) + b  的结果 对把。  

    这些结果应该是  很多个  数字    是一个 一维数组 对把。

    然后把这些数组 用刚才发发的那个图片 进行运算。 得到概率。 这个解释有错误吗
    黑羽毛(82878247)  14:06:13
    是的
    墨须(964489899)  14:07:18
    现在我的问题是, 我了解了这个过程。 但是不理解。  为啥是概率。 没看明白。 。。。 
    小锋子Shawn(403568338)  14:07:39
    tf.matmul(x,W) + b
    小锋子Shawn(403568338)  14:07:45
    y=wx+b
    墨须(964489899)  14:07:50
    恩恩 
    小锋子Shawn(403568338)  14:08:25
    因为数值被压成0-1之间
    黑羽毛(82878247)  14:08:41
    它分10个数字,经过神经网络运算后告诉你分别是0-9每个数字的概率
    小锋子Shawn(403568338)  14:08:48
    所有“误”认为概率
    黑羽毛(82878247)  14:08:52
    概率最大的就是它认为的数字了
    墨须(964489899)  14:09:20
    好吧。 我再琢磨琢磨 。 
    黑羽毛(82878247)  14:09:50
    比如输入的图片,运算完认为是7的概率位0.8,那么程序就识别这个图片位7
    小锋子Shawn(403568338)  14:10:17
    [未知表情]概率就是0-1的实数
    墨须(964489899)  14:10:34
    我再重头捋一边。  稍等阿
    小锋子Shawn(403568338)  14:10:37
    然后softmax出来的值在0-1之间,所以可视为概率
    黑羽毛(82878247)  14:10:47
    是的,但是所有分类的概率加一起必须为1
    黑羽毛(82878247)  14:12:16
    比如分三类的话,第一类是0.2,第二类也是0.2,那第三类一定是1-0.2-0.2=0.6
    小锋子Shawn(403568338)  14:19:20

    小锋子Shawn(403568338)  14:19:45
    两个式子计算出了一个,另外一个就是1-P
    墨须(964489899)  14:20:16

    看下这个图。  图1  乘以 图 2  的到 图3 的结果。  那么 图3 和图4 能相加吗?   图3和 图4  行列 宽度不一样阿。

    发送消息内容超长,请分条发送。
    墨须(964489899)  14:21:14

    看下这个图。  图1  乘以 图 2  的到 图4 的结果。  那么 图3 和图4 能相加吗?   图3和 图4  行列 宽度不一样阿。
    黑羽毛(82878247)  14:21:42
    3和4都是10列可以加
    小锋子Shawn(403568338)  14:21:41

    小锋子Shawn(403568338)  14:22:08
    一类高概率,另一类就是低概率;反之亦然。
    墨须(964489899)  14:22:21
    @黑羽毛  但是 4 是 784 行阿。  图 3  图 4  行数 不相同阿
    黑羽毛(82878247)  14:22:41
    每行分别加
    墨须(964489899)  14:23:18
    好吧。 只能这样了
    黑羽毛(82878247)  14:24:00
    784*10个表你要弄清是什么意思
    墨须(964489899)  14:24:27
    权重阿。  10个数字 对应的  像素权重
    小锋子Shawn(403568338)  14:24:32
    y_predict就是各个实例属于10类的概率
    黑羽毛(82878247)  14:24:40
    是的
    小锋子Shawn(403568338)  14:25:27

    小锋子Shawn(403568338)  14:25:36
    a1-a10代入softmax
    墨须(964489899)  14:25:37
    x = tf.placeholder(tf.float32, [None, 784]) 

    重点是这个代码。  [none,784]  到底表示的是  一维数组  还是2维数组。 

    如果是2维数组的话,  刚才哪个公式 最后一步 +b 就没法计算阿
    小锋子Shawn(403568338)  14:25:43
    每行
    小锋子Shawn(403568338)  14:26:26
    二维数组
    小锋子Shawn(403568338)  14:26:31
    每行一个样本
    墨须(964489899)  14:27:21
    恩恩。 那么问题来了。  图1  和 图2 相乘。 得到的还是一个2维数组,  图4 即 b 是一个一维数组。 那么  +b 这个 运算 就是错的阿
    黑羽毛(82878247)  14:27:24
    @墨须 图4不是784行吧
    黑羽毛(82878247)  14:27:30
    应该是n行
    小锋子Shawn(403568338)  14:27:42
    n行
    墨须(964489899)  14:28:01
    @黑羽毛  图4 应该是 多少个图片 就是多少行。  
    黑羽毛(82878247)  14:28:16

    墨须(964489899)  14:28:43
    我的问题不影响 +b 这个 代码有问题。  2维数组   + 1维数组  怎么加 这个运算 是正确的吗
    黑羽毛(82878247)  14:29:25
    这个加不要理解成矩阵想加就行了
    墨须(964489899)  14:30:40
    所以问题应该是出在 x的定义上。  x 是个 1维数组。  那么一切就都ok 了
    小锋子Shawn(403568338)  14:31:22
    比如100个样本,x为100x784, W为784x10,结果为100x10,b为一维数组,由于有100个样本,复制一百行
    小锋子Shawn(403568338)  14:31:29
    我想这样的
    黑羽毛(82878247)  14:31:59

    墨须(964489899)  14:32:17
    意思是懂了。  就是想弄清 tensorflow 的运行机制。  他到底是怎么搞的
    小锋子Shawn(403568338)  14:33:45
    x是每行样本,乘以W的每一列,要加上一个b的
    黑羽毛(82878247)  14:34:00
    tensorflow就是先列出所有的公式(所谓的画运行图),然后统一输入数据一起计算(所谓的run)
    小锋子Shawn(403568338)  14:34:47
    b其实100行都相同的
    黑羽毛(82878247)  14:34:49
    没有run之前,都只是没有带入数据的公式而已
    墨须(964489899)  14:34:55
    x  应该是 多少个 图像 就有多少行。  这个也是对的。  

    但是最后那个计算公式 + b 是不对的。  

    问题出在哪里? 该怎么解决
    小锋子Shawn(403568338)  14:35:03
    b的参数就是10个
    墨须(964489899)  14:35:18
    b 是1维数组 
    黑羽毛(82878247)  14:36:11
    它用的是+而不是add
    墨须(964489899)  14:37:06
    你的意思是  运算符号 +  这也行
    黑羽毛(82878247)  14:37:41
    这两个意思是不一样的
    黑羽毛(82878247)  14:37:48
    你说的是add
    墨须(964489899)  14:38:09
    嗯嗯。 
    黑羽毛(82878247)  14:38:33
    乘的时候用的是matmul而不是*
    墨须(964489899)  14:39:13
    应该是的。 百度一下。找确切答案
    墨须(964489899)  14:42:39
    兄弟 写个demo 测试一下 + 符号。 我菜鸟 
    黑羽毛(82878247)  14:43:42
    这个简单
    墨须(964489899)  14:44:03
    谢谢阿。  这些我就通透了。  
    黑羽毛(82878247)  14:47:14
    import tensorflow as tf
    matrix1 = tf.constant([[3,3],[4,4],[5,6]])
    matrix2 = tf.constant([[2,2]])
    matrix3 = matrix1+matrix2
    matrix4 = tf.add(matrix1,matrix2)
    with tf.Session() as sess:
        result = sess.run(matrix3)
        print(result)
        result = sess.run(matrix4)
        print(result)
    黑羽毛(82878247)  14:47:47
    [[5 5]
     [6 6]
     [7 8]]
    [[5 5]
     [6 6]
     [7 8]]结果居然是一样的
    小锋子Shawn(403568338)  14:48:06
    + is short for add
    墨须(964489899)  14:49:23
    就是说  +  就是  没一行 都是  +b 对的哦。  
    墨须(964489899)  14:49:37
    问题解决了  是把。  再确认一下
    黑羽毛(82878247)  14:50:02
    这是肯定的
    墨须(964489899)  14:50:28
    太感谢了。  终于入门了。  
     matrix1 = tf.constant([[3,3],[4,4],[5,6]])
    matrix2 = tf.constant([[2,2]])
    小锋子Shawn(403568338)  14:51:42
    应该自动检查shape
    小锋子Shawn(403568338)  14:51:51
    然后repmat
    小锋子Shawn(403568338)  14:52:34
    repmat就是复制某向量/矩阵若干次,
     
    delphi lazarus opengl 网页操作自动化, 图像分析破解,游戏开发
  • 相关阅读:
    Diverse Garland
    Basketball Exercise
    Quasi Binary
    Vacations
    Given Length and Sum of Digits...
    三大集合框架之map
    三大集合框架之Set
    JDBC操作数据库的基本步骤:
    java面试之----堆(heap)、栈(stack)和方法区(method)
    JSP九大隐式对象
  • 原文地址:https://www.cnblogs.com/delphi-xe5/p/6985213.html
Copyright © 2011-2022 走看看