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 网页操作自动化, 图像分析破解,游戏开发
  • 相关阅读:
    how to pass a Javabean to server In Model2 architecture.
    What is the Web Appliation Archive, abbreviation is "WAR"
    Understaning Javascript OO
    Genetic Fraud
    poj 3211 Washing Clothes
    poj 2385 Apple Catching
    Magic Star
    关于memset的用法几点
    c++ 函数
    zoj 2972 Hurdles of 110m
  • 原文地址:https://www.cnblogs.com/delphi-xe5/p/6985213.html
Copyright © 2011-2022 走看看