wake-up-neo.net

Keras-Fehler: Es wurde erwartet, dass 1 Array angezeigt wird

Ich habe folgende Fehlermeldung erhalten, als ich versuchte, ein MLP-Modell in Keras zu trainieren (ich verwende die Keras-Version 1.2.2).

Fehler beim Prüfen der Modelleingabe: Die Liste der Numpy-Arrays, die Sie an Ihr Modell übergeben ist nicht die Größe, die das Modell erwartet. Erwartet um 1 Arrays zu sehen, bekam aber stattdessen die folgende Liste von 12859 Arrays:

Dies ist die Zusammenfassung des Modells

____________________________________________________________________________________________________
Layer (type)                     Output Shape          Param #     Connected to
====================================================================================================
dense_1 (Dense)                  (None, 20)            4020        dense_input_1[0][0]
____________________________________________________________________________________________________
dense_2 (Dense)                  (None, 2)             42          dense_1[0][0]
====================================================================================================
Total params: 4,062
Trainable params: 4,062
Non-trainable params: 0
____________________________________________________________________________________________________
None

Dies ist die erste Modellzeile

 model.add(Dense(20, input_shape=(200,), init='lecun_uniform', activation='tanh'))

Für das Training:

model.fit(X,Y,nb_Epoch=100,verbose=1)

dabei ist X eine Liste von Elementen und jedes Element ist eine Liste von 200 Werten.

Bearbeiten:

Ich habe es auch versucht

model.add(Dense(20, input_shape=(12859,200), init='lecun_uniform', activation='tanh'))

aber ich bekomme den gleichen fehler

9
MysticForce

Ihr Fehler rührt von der Tatsache her, dass Ihre X aus irgendeinem Grund nicht in einen numpy.array umgewandelt wurde. In diesem Fall wird Ihre X als eine Liste von Zeilen behandelt, und dies ist ein Grund für Ihre Fehlermeldung (dass eine Eingabe statt einer Liste erwartet wurde, die mehrere Zeilenelemente enthält). Transformation:

X = numpy.array(X)
Y = numpy.array(Y)

Ich würde einen Datenladevorgang prüfen, da dort etwas schief gehen könnte.

UPDATE:

Wie in einem Kommentar erwähnt, muss input_shape in input_dim geändert werden.

UPDATE 2:

Um input_shape zu behalten, sollte man zu input_shape=(200,) wechseln.

14
Marcin Możejko

Ich habe meinen durch Hinzufügen behoben 

np.array

zu train_X, train_Y, valid_X und valid_Y. Zum Beispiel, 

model.fit(np.array(train_X),np.array(train_Y),
          batch_size=32,nb_Epoch=20,
          validation_data=(np.array(valid_X),np.array(valid_Y)),
          callbacks=[early_stop])

Ich habe die Hilfe von hier bekommen. Dieser Ansatz verläuft wahrscheinlich langsam, da alle Datenfeatures in numpy-Arrays konvertiert werden müssen, und dies kann für Ihr System viel Arbeit bedeuten. 

0
rocksyne