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
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.
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.