2016-08-04 13 views
0

最近、tensorflowを使用して開始されましたが、私はfeed_dictの機能について本当に混乱しています。 tensorflowウェブサイトからmnist例を見てみるとtensorflowのfeed_dictの仕組みに混乱があります

、xはここで「なし」も「BATCH_SIZE」

x = tf.placeholder(tf.float32, shape=[None, 784]) 
ことができなかったので、すべてのトレーニング反復画像の新しいバッチで満たされるシンボリックプレースホルダですトレーニング・ループ中

x_image = tf.reshape(x, [-1,28,28,1]) 

形状28x28 2D画像に1x784形状裏面平坦だから

このチュートリアルの畳み込み部分を見て、Xを再構築するためのコマンドがあります、Xは、コマンドを介して供給される

train_step.run(feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.5}) 

私の質問は、xに値を入力するとき、テンソルフローはxを含むすべての演算を自動的にベクトル化しますか?たとえば、オペレーションを定義するときなどに、

h_conv1 = tf.nn.relu(conv2d(x_image, W_conv1) + b_conv1) 

これは自動的にバッチ全体で機能しますか?

xがndarrayであり、各行がフラット化されたイメージである場合、xのプレースホルダーのテンソルフローに「なし」と指定されているため、個々のトレーニングサンプルとして各行を自動的に使用し、

答えて

2

引数は静的形状推定(すなわちtensor.get_shape)に使用され、オプションです。 TensorFlowは自動的に何もベクトル化しませんが、バイナリcwise opsの場合はbroadcastingを使用します。あなたの例では、tf.conv2dは、各行を例として扱う操作なので、バッチでは動作しますが、個々の例では動作しません。またbatch[0]はバッチの入力であり、batch[1]はラベルのバッチです。

+0

ああ、私はテンソルフローAPIから理解していると思います。「畳み込み演算が画像のバッチに対して2-Dフィルタを掃引します。」テンソルフローが自動的にオペレーションをベクトル化するわけではないので、conv2dは本質的にバッチ処理が可能です。 – beeCwright

関連する問題