Wie viele andere fand ich die Ressourcen hier und hier äußerst nützlich für das Verständnis von LSTM-Zellen. Ich bin zuversichtlich, dass ich verstehe, wie Werte fließen und aktualisiert werden, und ich bin zuversichtlich, dass ich auch die genannten "Gucklochverbindungen" usw. hinzufügen kann.
In meinem Beispiel habe ich zu jedem Zeitpunkt einen Eingabevektor der Länge i
und einen Ausgabevektor der Länge o
, wobei o < i
.
Was auf keiner Seite wirklich behandelt wird, ist, wie diese angeordnet und trainiert sind.
Ich habe 2 Fragen:
- In meinen Trainingsdaten habe ich viele Eingabe / Ausgabe-Vektorpaare, die vielen, vielen Zeiteinheiten entsprechen. Angenommen, ich trainiere das LSTM mit allen Daten. Kann ich dann eine Eingabe beliebiger Länge ausführen? Was ich meine ist, wenn ich Trainingsdaten für beispielsweise das gesamte Jahr 2015 und 2016 habe, kann ich dann Daten für 2017 über das Netzwerk ausführen? Oder vielleicht 2017 bis 2020?
- Nach dem, was ich gelesen habe, habe ich das Gefühl, eine LSTM-Zelle pro Zeiteinheit zu haben. Wenn ich also viele Zeiteinheiten habe, habe ich viele verkettete LSTM-Zellen. Da die Länge der Kette von der Länge der Daten abhängt, die ich durch das Netzwerk laufen lassen möchte, und dies vermutlich willkürlich ist, kann ich nicht sehen, wie ich dies trainieren würde, es sei denn, ich trainiere nur eine einzelne LSTM-Zelle, die dann eine Nummer dupliziert mal. Es scheint also, als würde ich eine einzelne LSTM-Zelle trainieren und sie dann
n
für eine bestimmte Eingangsvektorliste der Länge miteinandern
verketten? Obwohl eine einzelne LSTM-Zelle eine Reihe von Elementen und Funktionen enthält, scheint es nicht genug zu sein, so viele Informationen in etwas so Kleinem zu erfassen?
Vielen Dank. Gibt es andere Ressourcen, die ich (relativ schnell) verbrauchen kann, um die Details der Implementierung zu verstehen? Die beiden obigen Links gaben ein fantastisches Bild auf hoher Ebene von dem, was vor sich geht, erfassen diese feineren Details jedoch nicht.
quelle