2017-11-15 2 views
1

Ich versuche, mehr LSTM Schichten zu meinem neuronales Netz hinzuzufügen, aber ich erhalte die folgende Fehlermeldung erhalten:Ausgabe versucht, gestapelt LSTM Schichten mit Keras zu implementieren

ValueError: Error when checking target: expected dense_4 to have 2 dimensions, but got array with shape (385, 128, 1) 

Der Code für mein Modell ist wie folgt:

model = Sequential() 

model.add(LSTM(60, return_sequences=True, input_shape=(128, 14))) 

model.add(LSTM(60, return_sequences=False)) 

model.add(Dense(1)) 

model.compile(loss='mean_squared_error', optimizer='adam') 

model.fit(data_train, RUL_train, epochs=number_epochs, batch_size=batch_size, verbose=1) 

Es funktioniert gut, wenn ich die zweite LSTM-Schicht entferne. Oder wenn ich dichtere Schichten hinzufüge. Nur nicht, wenn ich die LSTM-Ebene hinzufüge. RUL_train hat Form (385, 128, 1). Der Ausgang des model.summary ist wie folgt:

_________________________________________________________________ 
    Layer (type)     Output Shape    Param # 
================================================================= 
lstm_15 (LSTM)    (None, 128, 60)   18000  
_________________________________________________________________ 
lstm_16 (LSTM)    (None, 60)    29040  
_________________________________________________________________ 
dense_7 (Dense)    (None, 1)     61   
================================================================= 
Total params: 47,101 
Trainable params: 47,101 
Non-trainable params: 0 
_________________________________________________________________ 

Jede Hilfe sehr geschätzt.

+0

Welche Version von Keras verwenden Sie? – Brendan

+0

'return_sequences = True' auf der letzten Ebene – DJK

Antwort

0

Dies ist ein Fehler, der in Keras 2.1.0 eingeführt wurde (und in 2.1.1 nicht vollständig behoben wurde). Versuchen Sie, Keras 2.0.9 oder früher:

pip uninstall keras 
pip install keras==2.0.9 

https://github.com/fchollet/keras/issues/8481

+0

Danke für den Vorschlag. Ich habe Keras 2.0.8 ausgeführt. Aber ich habe trotzdem versucht, auf 2.0.9 zu aktualisieren, und ich stoße immer noch auf das gleiche Problem. –

1

Ihre Etiketten Array hat drei Dimensionen: (385,128,1).

Also, was ist dein Zweck?

  • Alle Schritte in jeder Sequenz klassifizieren? - Alle LSTMs müssen return_sequence=True
  • Eine Klasse für die gesamte Sequenz verwenden? - Fixieren Sie Ihr Etiketten-Array irgendwie zu (samples,1).