Unterschied zwischen Abtastwerten, Zeitschritten und Merkmalen im neuronalen Netz

17

Ich gehe den folgenden Blog im neuronalen LSTM-Netzwerk durch: http://machinelearningmastery.com/understanding-stateful-lstm-recurrent-neural-networks-python-keras/

Der Autor formt den Eingabevektor X als [Beispiele, Zeitschritte, Merkmale] für unterschiedliche Konfigurationen von LSTMs um.

Der Autor schreibt

In der Tat sind die Buchstabenfolgen Zeitschritte eines Merkmals und keine Zeitschritte einzelner Merkmale. Wir haben dem Netzwerk mehr Kontext gegeben, aber nicht mehr Sequenz als erwartet

Was bedeutet das?

Vipul Jain
quelle

Antworten:

16

Ich habe dies direkt unter den [samples, time_steps, features] gefunden, mit denen Sie sich befassen.

X = numpy.reshape(dataX, (len(dataX), seq_length, 1))

Samples - Dies ist die Länge (dataX) oder die Anzahl der Datenpunkte, die Sie haben.

Zeitschritte - Dies entspricht der Anzahl der Zeitschritte, die Sie für Ihr wiederkehrendes neuronales Netzwerk ausführen. Wenn Ihr Netzwerk 60 Zeichen speichern soll, sollte diese Zahl 60 sein.

Funktionen - Dies ist die Anzahl der Funktionen in jedem Zeitschritt. Wenn Sie Bilder bearbeiten, ist dies die Anzahl der Pixel. In diesem Fall scheint es 1 Feature pro Zeitschritt zu geben.

Joonatan Samuel
quelle
1
Können Sie den Unterschied erklären zwischen: X = numpy.reshape (dataX, (len (dataX), 3, 1)) und X = numpy.reshape (dataX, (len (dataX), 1, 3))? das lstm?
Vipul Jain
1
(len (dataX), 3, 1) führt LSTM für 3 Iterationen aus und gibt einen Eingabevektor der Form (1,) ein. (len (dataX), 1, 3) führt LSTM für 1 Iteration aus. Das bedeutet, dass es ziemlich nutzlos ist, sogar wiederkehrende Verbindungen zu haben, da es kein Feedback von vorherigen Iterationen geben kann. In diesem Fall hat die Eingabeform für RNN die Form (3,)
Joonatan Samuel
"(len (dataX), 3, 1) führt LSTM für 3 Iterationen aus" verwenden wir dafür keine Epoche. Bedeutet es dasselbe wie Epoche = 3?
Vipul Jain
1
Eine Epoche bei der Grobübersetzung bedeutet, dass wir an jedem Datenpunkt in unserem Datensatz einmal trainiert haben. Während des Trainings zählt das Durchsehen von len (dataX) Beispielen als 1 Epoche. RNNs nehmen jedoch Daten nacheinander auf. In jedem Trainingsbeispiel müssen Sie die Daten über mehrere Iterationen hinweg eingeben. ZB habe ich ein Wort "Auto" und bei jeder Iteration füttere ich es mit einem Buchstaben, lasse es die Berechnung abschließen und füttere dann den nächsten Buchstaben. Um die Verarbeitung des Wortes "Auto" abzuschließen, sind 3 Iterationen erforderlich, um das gesamte Wort Buchstabe für Buchstabe zu verarbeiten.
Joonatan Samuel
@JoonatanSamuel hi, ich weiß, dass viel Zeit vergangen ist, aber ich habe große Probleme, das gleiche Thema zu verstehen. Ihre Antwort ist sehr klar, aber ich bin immer noch ein bisschen verwirrt. Stellen Sie sich vor, wir hatten mehrere Jahre lang eine Zeitreihe, in der die Verkäufe für jeden Monat beschrieben wurden. Stellen Sie sich zum Beispiel len (data) = 3000, data.shape = (3000,1) vor, so dass 3000 Monate aufgezeichnet wurden. Nächste vorhersagen : Wenn ich N vorherige Beobachtung verwenden möchte, um die nächste (nur die nächste!) Vorherzusagen, wie sollte die Form der Eingabedaten für LSTM sein? Zum Beispiel, wenn wir t-n,..., t-2, t-1vorhersagen wollten t.
Euler_Salter
0

Es ist ein bisschen zu spät, aber nur für den Fall;
Ein Beispiel kann sich auf einzelne Trainingsbeispiele beziehen. Eine "batch_size" -Variable ist daher die Anzahl der Samples, die Sie an das neuronale Netzwerk gesendet haben. Das heißt, wie viele verschiedene Beispiele Sie gleichzeitig in das neuronale Netzwerk einspeisen.

Zeitschritte sind Ticks of Time. Es ist, wie lange jede Ihrer Proben in der Zeit ist. Beispielsweise kann ein Sample 128 Zeitschritte enthalten, wobei jeder Zeitschritt eine 30stel Sekunde für die Signalverarbeitung sein kann. Bei der Verarbeitung natürlicher Sprache (Natural Language Processing, NLP) kann je nach Konfiguration ein Zeitschritt mit einem Zeichen, einem Wort oder einem Satz verknüpft werden.

Merkmale sind einfach die Anzahl der Dimensionen, die wir in den einzelnen Zeitschritten eingeben. In NLP könnte ein Wort beispielsweise mit word2vec durch 300 Features dargestellt werden. Stellen wir uns bei der Signalverarbeitung vor, Ihr Signal sei 3D. Das heißt, Sie haben ein X-, ein Y- und ein Z-Signal, z. B. die Messungen eines Beschleunigungsmessers auf jeder Achse. Dies bedeutet, dass Sie für jede Probe 3 Features zu jedem Zeitschritt senden lassen würden.

Von Guillaume

Grün
quelle