Die eingebauten LSTM-Zellen geben Ihnen eine aufrufbar. Ich möchte jedoch statische Ebenen vor und nach den LSTM-Ebenen hinzufügen und alles durch Backprop trainieren. Ist das möglich?Wie kann man die LSTM-Zelle von Tensorflow als Teil eines größeren Graphen verwenden?
Antwort
Die Zelle callable
ist eine Funktion, die einen Eingang tf.Tensor
und den aktuellen Zustand als tf.Tensor
, und liefert einen Ausgang tf.Tensor
und den neuen Zustand als tf.Tensor
nimmt. Es gibt nichts besonderes an den Eingangs-/Ausgangs- und Zustandstensors: Diese können aus den Eingängen zu anderen TensorFlow-Operationen berechnet und/oder verwendet werden.
Ein Beispiel sehen Sie die ptb_word_lm.py
Modell:
for time_step in range(num_steps):
# ...
(cell_output, state) = cell(inputs[:, time_step, :], state)
outputs.append(cell_output)
Hier ist inputs
ein 3-D-Tensor, aus dem ein Stück genommen wird, um die Eingabe für eine Zelle des LSTM zu bekommen, und state
ist initially berechnet mit cell.zero_state()
, dann verwendet jede nachfolgende Iteration den Zustand der vorherigen Iteration.
Der inputs
Tensor ist der result eines tf.nn.embedding_lookup()
Vorgangs; Die outputs
Liste ist later concatenated und wird als Eingabe für eine Verlustberechnung verwendet. TensorFlow backprops vom Verlust durch den RNN und dem Einbettungsnachschlagen zurück zu den Modellvariablen.
- 1. Duplikat eines Tensorflow-Graphen
- 2. Tensorflow: Übertragen von Variablen über Graphen
- 3. Tensorflow: Wie fügt man benutzerdefinierte Eingaben in bestehende Graphen ein?
- 4. Verwenden von Datenbankdaten zum Auffüllen eines Graphen
- 5. Bild des Graphen in TensorFlow anzeigen?
- 6. Verwenden Ebene der Pandas Index als Teil eines Ausgabedateinamen
- 7. Benötigen Sie SSH und führen Sie einen einzelnen Befehl als Teil eines größeren Bash-Skript
- 8. Wie kann man die Schriftgröße in Graphen erhöhen? [Verwenden von Text (...) Befehl]
- 9. Wie kann man einen Teil eines 2D-Arrays bekommen?
- 10. Wie kann ich einen Teil eines Xaml Objekt Graphen über Linq nach XML extrahieren?
- 11. Wie kann ich einen Teil von base_url im Codeigniter als dynamischer Teil verwenden?
- 12. Verwalten eines größeren JavaScript-Projekts
- 13. Wie kann gvpr die Kanten eines Graphen klonen?
- 14. Verwenden von gpg zum Signieren eines RPM als Teil eines Continuous Build - Wie vermeide ich die Eingabeaufforderung für die Passphrase?
- 15. Export Tensorflow Graphen aus Python für die Verwendung in C++
- 16. Verwenden Sie einen Teil eines Links als eine Variable
- 17. Durchmesser eines riesigen Graphen
- 18. Wie kann ich die Zeit für die Ausführung jedes Knotens im Tensorfluss-Graphen berechnen?
- 19. Konzeption eines Redis-Graphen?
- 20. Wie kann ich einen Teilstring eines größeren Strings einfügen, ohne die Länge des Teilstrings zu kennen?
- 21. Wie kann man TensorFlow-Netzwerke profilieren?
- 22. Wie zeigt man alle Spalten eines Graphen in R an?
- 23. Verwenden von Variablen als Teil des Variablennamens in Unix
- 24. Einfache Formulartexteingabefelder als Teil eines Arrays
- 25. Wie stelle ich ein Bild als Hintergrund eines Graphen ein?
- 26. Kann die Rangkorrelation als Kostenfunktion in TensorFlow verwendet werden?
- 27. Regex passt nur zu einem Muster, wenn es kein Teil eines größeren Musters ist
- 28. Wie kann man einen Tensor im Tensorflow explizit an die Form eines anderen senden?
- 29. Kann OpenNLP HTML-Tags als Teil des Trainings verwenden?
- 30. AutoHotkey - Zip als Teil eines Pfades genannt
Ich denke, dass die Methode, die Sie beschreiben, den Nachteil hat, dass wenn das num_steps sehr groß ist, das Diagramm viel Zeit und Speicher benötigt, um initialisiert zu werden. Auch wenn Sie nicht von Anfang an die Länge der Zeitreihe kennen (d. H. Streaming-Daten), die Ihr Netzwerk verarbeitet, wäre es nutzlos. Korrigiere mich, wenn ich falsch liege –
Ja, in einigen dieser Fälle solltest du ['tf.nn.dynamic_rnn()'] (https://www.tensorflow.org/versions/r0.9/api_docs/python/nn .html # dynamic_rnn), die die Schleife nicht abrollt. Derzeit gibt es keine Bibliotheksmethode für die Verarbeitung von Streaming-Daten, aber die ursprüngliche Frage hatte diese Anforderung nicht. Für das Streaming von Daten können Sie etwas mit 'tf.while_loop()' implementieren, aber die aktuelle Implementierung ist effizienter, wenn Sie die maximale Anzahl von Zeitschritten im Voraus kennen. – mrry