最近追加された(TensorFlow 0.8)tf.placeholder_with_default()
opを使用することもできます。デフォルト値(通常はキュー/リーダーの出力)を指定できます。また、異なる値形。
たとえば、キューには32個の要素のバッチが生成され、各要素には784個のフィーチャがあり、32 x 784の行列が与えられます。
input_from_queue = ... # e.g. `queue.dequeue_many(32)` or `tf.train.batch(..., 32)`
# input_from_queue.get_shape() ==> (32, 784)
input = tf.placeholder_with_default(input_from_queue, shape=(None, 784))
# input.get_shape() ==> (?, 784)
# ...
train_op = ...
sess.run(train_op) # Takes examples from `queue`.
sess.run(train_op, feed_dict={input: ...}) # Takes examples from `feed_dict`.
これは、可変サイズのバッチで飼料または所望に応じて、入力されたリーダーを使用することを可能にします。
それは面白いです...あなたは確かに実行されますか?たとえば、デキューは「プレースホルダ」ではないため、フィードを送れますか? – user3391229
はい、うまくいきます(TensorFlow 0.10.0rc1で試しました)。要点は、TensorFlowでは、プレースホルダだけでなく、* any *演算の出力を供給することができます。この場合、演算を評価しようとしません。実際には、一般的にプレースホルダを使用して意図を明確にしているので、代わりにプレースホルダを使用することをおすすめしますが、この特定のケースでは、単純化してプレースホルダを忘れることはやや自然です。 – MiniQuark
これは大変感謝しています。私の世界観は少し変わった – user3391229