TensorFlowに典型的なCNNモデルがあるとします。TensorFlow:異なる入力テンソルでネットワークを再実行しますか?
def inference(images):
# images: 4D tensor of [batch_size, IMAGE_SIZE, IMAGE_SIZE, 3] size.
conv_1 = conv_layer(images, 64, 7, 2)
pool_2 = pooling_layer(conv_1, 2, 2)
conv_3 = conv_layer(pool_2, 192, 3, 1)
pool_4 = pooling_layer(conv_3, 2, 2)
...
conv_28 = conv_layer(conv_27, 1024, 3, 1)
fc_29 = fc_layer(conv_28, 512)
fc_30 = fc_layer(fc_29, 4096)
return fc_30
典型的なフォワード・パスは次のように行うことができる:
images = input()
logits = inference(images)
output = sess.run([logits])
は今私のinput
機能は今left_images
とright_images
(ステレオカメラ)、引数のペアを返すとします。 right_images
をconv_28
まで、left_images
をfc_30
まで実行したいです。したがって、この
images = tf.placeholder(tf.float32, [batch_size, IMAGE_SIZE, IMAGE_SIZE, 3])
left_images, right_images = input()
conv_28, fc_30 = inference(images)
right_images_val = sess.run([conv_28], feed_dict={images: right_images})
left_images_val = sess.run([fc_30], feed_dict={images: left_images})
のようなものしかし、これは私が当時TensorFlowにそれを養うためにinputs
を評価することを避けるためにしたい
TypeError: The value of a feed cannot be a tf.Tensor object. Acceptable feed values include Python scalars, strings, lists, or numpy ndarrays.
で失敗します。異なる引数でinference
を2回呼び出すと、conv_layer
などの関数が変数を作成するため、機能しません。
異なる入力テンソルでネットワークを再実行することはできますか?
"イメージ"の宣言方法がわかりません。それはtf.placeholderですか?もしそうでなければ、それはすべきです。 – RaduK