I ein Autoencoder Modell in Tensorflow haben, die als grob geschrieben werden kann (dies ist unrealistisch vereinfachtes Beispiel):Lauf Subgraphen und Einspeisen Zwischenvariablen
x = tf.placeholder(tf.float32, input_shape, name='x')
# encoder part:
W = tf.Variable(tf.random_uniform(shape, -1, 1))
z = relu(tf.nn.conv2d(x, W, strides=[1, 2, 2, 1], padding='SAME'))
# decoder part:
y = relu(tf.nn.conv2d_transpose(z, W, shape_tr,
strides=[1, 2, 2, 1], padding='SAME'), b))
cost = tf.reduce_sum(tf.square(y - x))
So habe ich Eingangs Platzhalter x
, Zwischendarstellung z
, Gewichtungsmatrix W
und Ausgabe y
.
Dann trainiere ich mein Modell wie folgt aus:
optimizer = tf.train.AdamOptimizer(learning_rate).minimize(cost)
sess = tf.Session()
sess.run(tf.global_variables_initializer())
sess.run(optimizer, feed_dict={x: some_train_data})
nun einige Testdaten gegeben ich die Ausgabe des Modells überprüfen:
recon = sess.run(y, feed_dict={x: some_test_data})
Ich kann auch die Zwischendarstellung für diese Daten erhalten
latent = sess.run(z, feed_dict={x: some_test_data})
Was ich will, ist in der Lage, meine Zwischendarstellung zu ändern (z
) und die decodierten Ergebnisse y
erhalten. Etwas wie folgt aus:
recon = sess.run(y, feed_dict={z: some_fake_z})
Natürlich ist es nicht so z
Arbeit ist kein Platzhalter, ich habe einen Fehler wie You must feed a value for placeholder tensor 'x'
. Wenn ich x
zur Verfügung stelle, werden die Ergebnisse überhaupt nicht von z
abhängen (was wiederum zu erwarten ist).
Also meine Frage ist: Wie kann ich einen Subgraphen ausführen, die y
als Funktion der z
und ihn mit meinen eigenen Werten von z
berechnet?
Danke, das funktioniert. Allerdings muss ich noch einige "x" -Werte bereitstellen (die keinen Effekt haben), um die Berechnung durchzuführen. Ist es möglich, es zu vermeiden? –
@ IlyaV.Schurov: Das ist überraschend für mich. Könnten Sie einen vollständigen, aber minimalen Code für mich testen? Codes in Ihrer Frage können nicht ausgeführt werden, da sie viele nicht definierte Namen wie 'input_shape' enthalten. –
Oh, wahrscheinlich, das ist ein Nachteil meiner Architektur - es scheint, dass der Decoderteil einige Informationen über die Form von 'x' benötigt und somit vom entsprechenden Platzhalter abhängt. –