2

meine Eingabe Zeitreihendaten hat die Form (nb_samples, 75, 32).
75 ist die Zeitschritte und 32 ist die Eingabe-Dimension.Keras LSTM multidimensionaler Eingang

model = Sequential() 
model.add(LSTM(4, input_shape=(75, 32))) 
model.summary() 

Die LSTM Gewichtsvektoren, [W_i, W_c, W_f, W_o] sind alle 32 Dimensionen, aber der Ausgang ist nur ein einziger Wert. die Ausgangsform des obigen Modells ist (1,4). Aber in LSTM ist die Ausgabe auch ein Vektor, also sollte es nicht (32,4) für viele zu einer Implementierung wie oben sein? Warum gibt es auch einen einzelnen Wert für Multi-Dimension-Eingabe?

+0

Was meinst du damit, dass diese Vektoren 32 Dimensionen haben? Es ist nicht wahr. –

Antwort

1

Wie Sie in der Keras doc for reccurent layers

Für einen Eingang Form lesen kann (nb_sample, timestep, input_dim), haben Sie zwei mögliche Ausgänge:

  • wenn Sie return_sequence=True in Ihrem LSTM gesetzt (was nicht der Fall ist), Sie geben jeden versteckten Zustand zurück, also die Zwischenschritte, wenn der LSTM Ihre Sequenz "liest". Sie erhalten eine Ausgabe der Form (nb_sample, timestep, output_dim).

  • Wenn Sie return_sequence=False (Standardeinstellung) einstellen, wird nur der letzte Status ausgegeben. Sie erhalten also eine Ausgabe der Form (nb_sample, output_dim).

Also, wenn Sie Ihre LSTM Schicht wie folgt definieren:

model.add(LSTM(4, return_sequence=True, input_shape=(75, 32))) 

Sie eine Ausgabe der Form (None, 75, 4) haben. Wenn 32 Ihre Zeitdimension ist, müssen Sie die Daten transponieren, bevor Sie sie dem LSTM zuführen. Die erste Dimension ist die zeitliche Dimension.

Ich hoffe das hilft :)

Verwandte Themen