web-dev-qa-db-fra.com

Erreur Keras: attendue pour voir 1 tableau

J'ai eu l'erreur suivante lorsque j'ai essayé de former un modèle MLP en keras (j'utilise la version keras 1.2.2)

Erreur lors de la vérification de l'entrée du modèle: la liste des tableaux Numpy que vous avez Les données transmises à votre modèle ne correspondent pas à la taille attendue. Attendu pour voir 1 tableaux mais a obtenu à la place la liste suivante de 12859 tableaux:

Ceci est le résumé du modèle

____________________________________________________________________________________________________
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

Ceci est la première ligne du modèle

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

Pour s'entraîner:

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

où X est une liste d'éléments et chaque élément est une liste de 200 valeurs.

Modifier :

J'ai aussi essayé

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

mais j'obtiens la même erreur

9
MysticForce

Votre erreur provient du fait que votre X pour une raison quelconque n’a pas été transformé en un numpy.array. Dans ce cas, votre X est traitée comme une liste de lignes et c’est une raison derrière votre message d’erreur (qu’elle attend une entrée au lieu d’une liste contenant plusieurs éléments de lignes). Transformation:

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

Je vérifierais un processus de chargement de données parce que quelque chose pourrait mal tourner là-bas.

METTRE À JOUR:

Comme cela a été mentionné dans un commentaire - input_shape doit être remplacé par input_dim.

MISE À JOUR 2:

Afin de garder input_shape, on devrait le changer en input_shape=(200,).

14
Marcin Możejko

J'ai corrigé le mien en ajoutant 

np.array

train_X, train_Y, valid_X et valid_Y. Par exemple, 

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])

J'ai eu l'aide de ici . Cette approche risque d’être lente, car toutes les fonctions de données devront être converties en baies numpy et le travail de votre système pourrait s’avérer lourd. 

0
rocksyne