web-dev-qa-db-fra.com

ValueError: l'entrée 0 est incompatible avec la couche lstm_13: ndim attendu = 3, trouvé ndim = 4

J'essaie de classer plusieurs classes et voici les détails de mes entrées et sorties de formation:

train_input.shape = (1, 95000, 360) (tableau d'entrée de longueur 95000, chaque élément étant un tableau de longueur 360)

train_output.shape = (1, 95000, 22) (22 classes sont là)

model = Sequential()

model.add(LSTM(22, input_shape=(1, 95000,360)))
model.add(Dense(22, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model.summary())
model.fit(train_input, train_output, epochs=2, batch_size=500)

L'erreur est:

ValueError: L'entrée 0 est incompatible avec la couche lstm_13: ndim attendu = 3, trouvé ndim = 4 en ligne: model.add (LSTM (22, input_shape = (1, 95000,360)))

S'il vous plaît, aidez-moi, je ne suis pas en mesure de le résoudre par d'autres réponses.

11
Urja Pawar

J'ai résolu le problème en faisant

taille d'entrée: (95000,360,1) et taille de sortie: (95000,22)

et changé la forme d'entrée en (360,1) dans le code où le modèle est défini:

model = Sequential()
model.add(LSTM(22, input_shape=(360,1)))
model.add(Dense(22, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model.summary())
model.fit(ml2_train_input, ml2_train_output_enc, epochs=2, batch_size=500)
10
Urja Pawar

input_shape est censé être (pas de temps, n_features). Supprimez la première dimension.

input_shape = (95000,360)

Idem pour la sortie.

6
Michele Tonutti

Eh bien, je pense que le principal problème est avec le return_sequences paramètre dans le réseau. Cet hyper paramètre doit être défini sur False pour dernière couche et true pour l'autre couches précédentes .

1
Shobhit Srivastava