Angenommen, ich habe ein typisches CNN-Modell in TensorFlow.TensorFlow: Netzwerk mit einem anderen Eingangstensor neu starten?
images = input()
logits = inference(images)
output = sess.run([logits])
nehmen jetzt Nun meine input
Funktion ein Paar von Argumenten zurückzugibt, left_images
und right_images
(Stereokamera):
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
Ein typischer Vorwärtspass wie dies getan werden könnte. Ich möchte right_images
bis conv_28
und left_images
bis fc_30
laufen lassen. So etwas wie diese
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})
Dies ist jedoch nicht mit
TypeError: The value of a feed cannot be a tf.Tensor object. Acceptable feed values include Python scalars, strings, lists, or numpy ndarrays.
Ich will, um zu vermeiden inputs
zu bewerten, um sie dann wieder zu TensorFlow zu füttern. Der Aufruf von inference
zweimal mit verschiedenen Argumenten funktioniert auch nicht, weil Funktionen wie conv_layer
Variablen erstellen.
Kann das Netzwerk mit einem anderen Eingangstensor erneut gestartet werden?
Ich bin nicht sicher, wie die "Bilder" erklärt wird. Es ist ein Platzhalter? Wenn nicht, sollte es. – RaduK