Ich habe LSTMs für eine Weile studiert. Ich verstehe auf hohem Niveau, wie alles funktioniert. Als ich sie jedoch mit Tensorflow implementieren wollte, bemerkte ich, dass BasicLSTMCell eine Reihe von Einheiten (dh num_units
) benötigt.
Aus dieser sehr gründlichen Erklärung von LSTMs habe ich herausgefunden, dass eine einzelne LSTM-Einheit eine der folgenden ist
Das ist eigentlich eine GRU-Einheit.
Ich gehe davon aus, dass sich der Parameter num_units
von auf die Anzahl dieser Parameter BasicLSTMCell
bezieht, die in einer Ebene miteinander verbunden werden sollen.
Da bleibt die Frage - was ist in diesem Zusammenhang eine "Zelle"? Entspricht eine "Zelle" einer Schicht in einem normalen neuronalen Feed-Forward-Netzwerk?
Antworten:
Die Terminologie ist leider inkonsistent.ht
num_units
in TensorFlow ist die Anzahl der versteckten Zustände, dh die Dimension von in den von Ihnen angegebenen Gleichungen.Unter https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/api_docs/python/functions_and_classes/shard9/tf.nn.rnn_cell.RNNCell.md :
"LSTM-Schicht" ist wahrscheinlich expliziter, Beispiel :
quelle
num_unit
großes horizontales Array von miteinander verbundenen LSTM-Zellen. Macht Sinn. Also wäre es dann analog zu einer verborgenen Schicht in einem Standard-Feed-Forward-Netzwerk?Die meisten LSTM / RNN-Diagramme zeigen nur die verborgenen Zellen, jedoch niemals die Einheiten dieser Zellen. Daher die Verwirrung. Jede ausgeblendete Ebene hat ausgeblendete Zellen, so viele wie Zeitschritte. Außerdem besteht jede verborgene Zelle aus mehreren verborgenen Einheiten, wie im folgenden Diagramm dargestellt. Daher ist die Dimensionalität einer verborgenen Schichtmatrix in RNN (Anzahl der Zeitschritte, Anzahl der verborgenen Einheiten).
quelle
Obwohl das Problem fast das gleiche ist, wie ich es in dieser Antwort beantwortet habe , möchte ich dieses Problem, das mich heute auch im seq2seq-Modell (dank der Antwort von @Franck Dernoncourt) ein wenig verwirrt hat, in der Grafik veranschaulichen. In diesem einfachen Geberdiagramm:
quelle
num_units = n
in dieser FigurMeiner Meinung nach bedeutet Zelle einen Knoten wie eine versteckte Zelle, der auch als versteckter Knoten bezeichnet wird. Für ein mehrschichtiges LSTM-Modell kann die Anzahl der Zellen mit time_steps * num_layers berechnet werden und die Anzahl der Einheiten ist gleich time_steps
quelle
Diese Einheit in Keras ist die Dimension des Ausgaberaums, die der Länge der Verzögerung (time_step) entspricht, in der sich das Netzwerk wiederholt.
https://keras.io/layers/recurrent/
quelle