2017-05-23 8 views
1

Tensorflowがテンソルの形状をどのように扱うかについて、いくつかの明確化が必要です。これは、MNIST exampleから撮影されていますので、実行時にTensorflowのテンソルの形状とマットムの明確化

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は、それはあなたがシェイプ(100, 10)とテンソルに形状(10)とテンソルを追加するとき、それはに各行(100, 10)テンソルの(10)テンソルを追加したのと同じだということを意味し、broadcastingをサポートしていることを言及しています。

希望があれば

関連する問題