【问题标题】:What is the difference between these two tensors and why?这两个张量有什么区别,为什么?
【发布时间】:2017-03-27 12:19:05
【问题描述】:

显示的前两个结果在维度或排名上有何不同?为什么我可以添加这两个(矩阵/向量)?这听起来像是一个幼稚的问题,但我正在努力理解张量/矩阵之间的加法是如何工作的。谢谢你。 (我也想知道为什么我可以将最后两个结果相加。它们不是两个不同大小的矩阵吗?)

import tensorflow as tf
import numpy as np
W = tf.Variable(tf.zeros([784, 10])) 
x = tf.Variable(tf.zeros([2,784]))
z = tf.matmul(x,W)

Y = tf.Variable([4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0])  

x = tf.Variable(tf.zeros([2,10]))  

model = tf.initialize_all_variables()  

with tf.Session() as session:
    session.run(model)
    print(session.run(z))
    print(session.run(Y)) 
    print(session.run(x))

结果:

[[ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]]

[  4.   5.   6.   7.   8.   9.  10.  11.  12.  14.]

[[ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]]

【问题讨论】:

    标签: matrix tensorflow dimensions


    【解决方案1】:

    我没有看到任何加法,只有乘法。

    您对Y 变量所做的只是打印出包含您指定的浮动值的张量本身。

    使用z,您将这两个张量相乘。矩阵相乘结果的维数的一般公式是 MxN * OxP = MxP(M 和 O 是行,N 和 P 是列)。所以对于 x,你有一个 2x784 张量乘以一个 784x10 张量。这(通过一般尺寸公式)给你一个尺寸为 2x10 的张量。

    如果您的意思是您可以在事后对 Yz 进行加法运算,这是因为 tensorflow 之类的库通常会将广播从一个张量应用到另一个张量,只要某些维度匹配。所以如果你做了Y + z 你会得到 ​​p>

    [[  4.   5.   6.   7.   8.   9.  10.  11.  12.  14.] 
     [  4.   5.   6.   7.   8.   9.  10.  11.  12.  14.]]
    

    因为广播被应用于 z 中的行数。

    编辑:我只是想到你要求在算术 x) 方面的差异,因为广播,z - Y 会是

    [[  -4.   -5.   -6.   -7.   -8.   -9.  -10.  -11.  -12.  -14.] 
     [  -4.   -5.   -6.   -7.   -8.   -9.  -10.  -11.  -12.  -14.]]
    

    【讨论】:

    • 感谢您让我知道从一个张量到另一个张量的广播。这就是我试图理解的。我对前两个结果之间的差异的含义提出了一些精确的问题。
    猜你喜欢
    • 2012-06-12
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多