Was passiert, wenn wir einer LSTM-Ebene eine 2D-Matrix zuführen?

8

Angenommen, ich füge eine 2D-Formmatrix (99, 13) als Eingabe in eine LSTM-Ebene ein. Ich habe n Dateien, wobei jede (99,13) Größenvektoren enthält. Ich habe beschlossen, 13 als Anzahl der Features und 99 als Zeitschritte zu betrachten.

(Während der Implementierung mit Keras habe ich die LSTM-Ebene als erste Ebene hinzugefügt. Und ich habe den output_dim der Ebene auf 100 festgelegt.)

Aber ich kann nicht herausfinden, wie die Dinge wirklich im Netzwerk sind, wenn wir einen Input wie oben liefern. Ich habe folgende Fragen, die ich selbst nicht beantworten kann.

  1. Welche Werte geben wir als Eingabe für die LSTM-Zellen an? ( xt , ht-1, das als Eingaben in die Zelle verwendet wird, sind immer Vektoren? In meinem Fall hat xt die Form [1,13]?)
  2. Wenn wir sagen, wir haben eine LSTM-Schicht als erste Schicht des Modus l, speist sie dann den ersten Eingabevektor allen Zellen in der gegebenen Schicht zu? (ZB: Alle n LSTM-Zellen in der ersten Schicht mit dem ersten Frame der Größe 13 (von 99 Frames) versorgen?) Wird weiterhin bei jedem Zeitschritt alle Zeilen der Eingabematrix gespeist?
  3. Was für einen Wert gibt eine LSTM-Zelle bei jedem Zeitschritt aus ? (Betrachten wir den Zellenzustand als die korrekte Ausgabe vom Knoten? Ist es ein einzelner Wert oder ein Vektor? Wenn es ein Vektor ist, welche Dimensionen gibt es? Gibt es eine Möglichkeit, die Dimensionen zu erraten? Ich habe ht als a angenommen Vektor)
  4. Was ist mit output_dim (Ausgabedimension) einer bestimmten Ebene gemeint ? Muss es immer die Anzahl der Knoten in der nächsten Schicht sein?

Bitte halten Sie dies nicht in der Warteschleife oder direkt an andere Gruppen. Ich denke, diese Fragen beziehen sich auf maschinelles Lernen und rnn. Ich habe Forschungsarbeiten gelesen, konnte aber keine klare Vorstellung davon bekommen, wie die Dinge im LSTM-Netzwerk wirklich funktionieren.

udani
quelle

Antworten:

1

1) Xsind Ihre Eingaben, wenn Sie 99 Zeitschritte haben, dann haben Sie 99 Vektoren der Größe 13 jeweils. Daher ist Ihre Eingabe für jeden Zeitschritt ein Vektor der Größe 13. Sie benötigen einen versteckten Startzustand, es sei denn, Sie haben einen Grund, etwas anderes zu tun. Ihr versteckter Anfangszustand kann alle Nullen sein. Die Größe dieses Vektors ist ein von Ihnen gewählter Hyperparameter.

2) Beachten Sie, dass es nicht 99 LSTM-Zellen gibt, sondern nur 1 LSTM-Zelle, die 99 Mal für jeden Zeitschritt wiederverwendet wird. Die LSTM-Zelle behält einen verborgenen Zustand und einen Zellzustand in sich bei, den sie an den nächsten Zeitschritt weiterleitet. Es wird jedoch nur 1 Parametersatz gelernt. Diese Parameter müssen in der Lage sein, alle Zeitschritte zu verarbeiten, abhängig von der aktuellen Eingabe, dem verborgenen Zustand und dem Zellenzustand.

3) Der Zellenzustand ist keine Ausgabe, wird jedoch als Eingabe an den nächsten Zeitschritt weitergeleitet. Der verborgene Zustand h_twird sowohl an die Ausgabe als auch an den nächsten Zeitschritt übergeben.

4) Ich bin mir nicht ganz sicher, ich brauche einen Verweis auf den Begriff output_dim.

Dies ist ein ausgezeichnetes Tutorial zu LSTMs: http://colah.github.io/posts/2015-08-Understanding-LSTMs/

David Parks
quelle
0

Was ist mit output_dim (Ausgabedimension) einer bestimmten Ebene gemeint? Muss es immer die Anzahl der Knoten in der nächsten Schicht sein?

output_dim = Dimension der verborgenen LSTM-Zustände.

Franck Dernoncourt
quelle