2017-08-11 5 views
1

Quelqu'un pourrait m'aider à comprendre de quoi cette erreur parle?Python - Tensorflow - LSTM- ValueError: Erreur lors de la vérification de la cible du modèle: dense_16 attendu pour avoir la forme (None, 100) mais avec tableau avec la forme (16, 2)

model = Sequential() 
model.add(Embedding(82, 100, weights=[embedding_matrix], input_length=1000)) 
model.add(LSTM(100)) 
model.add(Dense(100, activation = 'sigmoid')) 
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) 
print(model.summary()) 
model.fit(x_train, y_train, epochs = 5, batch_size=64) 

Quand je lance ce modèle LSTM, je reçois une erreur

ValueError: Error when checking model target: expected dense_16 to have shape (None, 100) but got array with shape (16, 2) 

Je ne sais pas à quel point les informations ci-dessous serait utile:

x_train.shape 
Out[959]: (16, 1000) 

y_train.shape 
Out[962]: (16, 2) 

Si vous avez besoin toute autre information, je suis prêt à fournir

Répondre

1

vous avez défini la forme d'entrée de couche dense est 100.Vous devez donc vous assurer que votre entrée doit toujours avoir la même forme. ici dans votre cas faites x_train et et y_train même forme.

essayer avec:

model = Sequential() 
# here the batch dimension is None, 
# which means any batch size will be accepted by the model. 
model.add(Dense(32, batch_input_shape=(None, 500))) 
model.add(Dense(32)) 
+0

Merci cela a fonctionné pour moi. cependant, 32 n'a pas fonctionné, j'ai choisi Dense (2, batch_input_shape = (None, 500))). cela a fonctionné. Serait-il possible pour vous de m'expliquer le principe fondamental derrière cela s'il vous plaît. Merci –

+0

vous êtes les bienvenus. ça t'a aidé. et bon, je viens de vous donner un prototype ou un exemple. paramètre que vous devez faire changer !!. :) –

+0

Merci beaucoup. Votre prototype a fonctionné –

1

Votre dernière couche a une forme de sortie de None, 100

model.add(Dense(100, activation = 'sigmoid')) 

Mais vos données (y_train) a la forme (16,2). Il devrait être

model.add(Dense(2, activation = 'sigmoid'))