2016-05-31 3 views
0

Sowohl TensorFlow als auch Theano scheinen keine zyklischen Berechnungsgraphen zu unterstützen, zyklische Elemente werden als wiederkehrende Zellen mit Puffer- und Abwicklungszellen implementiert (RNN/LSTM-Zellen), aber diese Beschränkung hängt meistens mit der Berechnung zusammen der Rückvermehrung. Ich habe keine besondere Notwendigkeit, die Rückwärtsausbreitung zu berechnen, sondern nur die Vorwärtsausbreitungen.Zyklische Berechnungsgraphen mit Tensorflow oder Theano

Gibt es eine Möglichkeit, diese Einschränkung zu ignorieren oder vielleicht nur willkürliche Berechnungsgraphen in azyklischen Komponenten zu zerlegen?

Antwort

1

TensorFlow unterstützt zyklische Berechnung Graphen. Mit der Funktion tf.while_loop() können Sie eine while-Schleife mit beliebigen Untergraphen für die Bedingung und den Rumpf der Schleife angeben, und die Laufzeitumgebung führt die Schleife parallel aus. Die tf.scan()-Funktion ist eine übergeordnete API, die der theano.scan()-Funktion von Theano ähnelt. Beide ermöglichen es Ihnen, Tensoren dynamischer Größe zu durchlaufen.

+0

danke. Ich habe ein Beispiel (http://stackoverflow.com/q/37566925/1792701) eines Graphen hinzugefügt, wo ich versuche, den vorherigen Wert des Tensors als Eingabe zu verwenden, aber ich bekomme, dass der Tensor den Wert Null hat jeden Lauf, anstatt seinen vorherigen Wert zu bewahren. Soll ich 'sess.run' einfach durch' while_loop' ersetzen? – diffeomorphism