首页 文章

对Tensorflow张量形状和matmul的澄清

提问于
浏览
1

我需要澄清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

这就是我被困的地方 . xW 的矩阵乘积在运行时的形状为 (None, 10)(100, 10) . 但是我可以没有错误添加向量 b . 这让我很困惑 . 这怎么办?还有一些更好的文档吗?

1 回答

  • 1

    tf.matmul(x, W) + b 中的 + 运算符实际上是 tf.add(tf.matmul(x, W), b) (运算符重载)的简写 .

    documentation for tf.add提到,它支持broadcasting,这意味着,当你添加与形状 (10) 张量的张量形状 (100, 10) ,它的加入 (10) 张到 (100, 10) 张量的每一行的等价物 .

    希望有所帮助

相关问题