这两个张量之间有什么区别?为什么?

时间:2016-11-13 21:22:28

标签: matrix tensorflow dimensions

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

PKTSearchAPI

结果:

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))

1 个答案:

答案 0 :(得分:0)

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

您正在使用Y变量执行的操作是打印出包含您指定的浮动值的张量本身。

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

如果你的意思是你可以在Yz之后添加事实,那是因为像tensorflow这样的库通常只要一些尺寸匹配就可以将广播从一个张量应用到另一个张量。所以如果你做Y + z,你会得到

[[  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.]]