我需要澄清Tensorflow如何处理其张量的形状 . 这取自MNIST example:
我定义了一个占位符,稍后会提供一些我的训练数据:
x = tf.placeholder(tf.float32, shape=[None, 784])
在运行期间,我以100的批量提供它,因此它在运行时的形状是 (100, 784)
. 我还定义了权重和偏差:
W = tf.Variable(tf.zeros([784,10]))
b = tf.Variable(tf.zeros([10]))
W
的形状为 (784, 10)
, b
的形状为 (10)
. 现在我计算
y = tf.matmul(x,W) + b
这就是我被困的地方 . x
和 W
的矩阵乘积在运行时的形状为 (None, 10)
或 (100, 10)
. 但是我可以没有错误添加向量 b
. 这让我很困惑 . 这怎么办?还有一些更好的文档吗?
1 回答
tf.matmul(x, W) + b
中的+
运算符实际上是tf.add(tf.matmul(x, W), b)
(运算符重载)的简写 .该documentation for tf.add提到,它支持broadcasting,这意味着,当你添加与形状
(10)
张量的张量形状(100, 10)
,它的加入(10)
张到(100, 10)
张量的每一行的等价物 .希望有所帮助