2017-05-23 103 views
1

我需要澄清一下Tensorflow如何處理張量的形狀。這是從MNIST example採取:關於Tensorflow張量形狀和matmul的澄清

我定義將在以後的點與我的一些訓練數據饋送的佔位符:

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

tf.matmul(x, W) + b中的+運算符實際上是tf.add(tf.matmul(x, W), b)(運算符重載)的簡寫。

documentation for tf.add提到,它支持broadcasting,這意味着當你與形狀(10)添加到張張量與形狀(100, 10),它的每一行(100, 10)張量加入(10)張量的等價物。

希望幫助