2016-07-11 18 views
2

Das klingt super einfach, aber ich kann keine Informationen im Internet finden. Mir fehlt wahrscheinlich ein grundlegendes Verständnis.So erstellen Sie eine wiederkehrende Variable mit TensorFlow

Ich möchte etwas einfaches tun: eine wiederkehrende Variable. Sprich:

Z(t) = W * Z(t-1) 

mit einigen festen (aber trainierbar) W.

Ich habe versucht, Dinge wie:

initializer = tf.random_uniform_initializer(0., 1.) 
with tf.variable_scope('recurrent', initializer=initializer): 
    Z = tf.get_variable('Z', shape=[...]) 
Z = tf.matmul(W, Z) 

Aber natürlich innerhalb einer Sitzung, wenn ich Z.eval() tun, gibt es einen kohärenten Wert von Z, aber Z selbst nicht aktualisiert wird.

Daher meine Frage: Wie erstellen Sie eine wiederkehrende Variable, die beim Ausführen des Graphen mit TensorFlow aktualisiert wird?

Vielen Dank für Ihre Hilfe!

Antwort

1

Wenn Sie schreiben eine Anweisung wie

Z = tf.matmul(W, Z) 

Sie aktualisieren den Python Variable Z und nicht die internen Speicher der TensorFlow mit dem TensorFlow zugehörigen Variable Z. Bitte werfen Sie einen Blick auf die section über Stateful Operationen in TensorFlow, um eine Vorstellung davon zu bekommen, wie TensorFlow State verwaltet. Um Ihre Frage zu beantworten, müssen Sie den tf.assign Betrieb verwenden TensorFlow die Z Variable wie folgt zu aktualisieren:

Z = tf.assign(Z, tf.matmul(W, Z)) 
+0

Hallo keveman, vielen Dank für Ihre Hilfe. Ich habe versucht, sie zuzuordnen, aber ich habe es nicht geschafft. Ich habe gerade herausgefunden, dass ich 'tf.assign (Z, tf.matmul (W, Z)' statt 'Z = tf.assign (Z, tf.matmul (W, Z))' .... ... Wie auch immer, jetzt funktioniert es wie gewünscht Vielen Dank !! – John

+0

Ja, 'tf.assign' gibt den Wert der TensorFlow-Variable * nach * der Zuweisung zurück Bearbeitet die Antwort, um das zu reflektieren. – keveman