ValueError: Entrée 0 est incompatible avec la couche lstm_13: attendu ndim=3, trouvé ndim=4
Je suis en train de multi-classe de la classification et voici les détails de ma formation d'entrée et de sortie:
train_input.forme= (1, 95000, 360) (95000 entrée de la longueur de tableau avec chaque
élément d'un tableau de 360 longueur)train_output.forme = (1, 95000, 22) (22 les 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: Entrée 0 est incompatible avec la couche lstm_13: attendu ndim=3, trouvé ndim=4
en ligne:
de modèle.ajouter(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 le biais d'autres réponses.
OriginalL'auteur Urja Pawar | 2017-06-16
Vous devez vous connecter pour publier un commentaire.
J'ai résolu le problème en faisant
et changé le d'entrée de la forme (360,1) dans le code du modèle est défini:
OriginalL'auteur Urja Pawar
input_shape est censé être (échéances, n_features). Suppression de la première dimension.
Même pour la sortie.
C'est un problème avec vos données d'entrée de la forme. La première dimension est censé être de chaque échantillon. Votre entrée (n_samples, échéances, n_features). En regardant votre autre commentaire, 95000 est votre n_samples pas vos échéances. Si vous avez seulement une fonction avec 360 échéances, puis celui qui vous est proposé est le bon format.
Ok, donc, ma contribution est d'avoir 360-360 blocs(qui je veux être traités comme des éléments), de sorte que devrait être la forme de l'entrée et de ce qui devrait être écrit à l'intérieur de ici->{modèle.ajouter(LSTM(22, input_shape=(?)))}
J'ai besoin de savoir ce que votre entrée est. Est-ce le temps de la série? Combien de différentes variables êtes-vous observer? Je vais vous donner un exemple: si je suis en observant la quantité de pluie et la température toutes les heures pendant 24 heures afin de prévoir le temps (1 = bon, 0 = mauvais), et je fais ça pour 365 jours, j'aurai 365 échantillons, dont chacun aura 24 échéances, et 2 variables (une pour la pluie, l'un pour la température), donc ma contribution va avoir la forme (365, 24, 2), et input_shape = (24, 2).
Mon entrée est un tableau de tableaux, chaque tableau dans le array est d'avoir un total de 360 signal de valeurs, ce 360 morceau est classé comme "L" arythmie ou "R" de l'arythmie, etc ou normal. et il y a 95000 ces tableaux, le array contenant tous ces 95000 échantillons (forme initiale: 95000,360) et de sortie après une chaude de codage a la forme:(95000,22) qu'il y a de 21 types d'arythmie et de 1 pour les normaux
OriginalL'auteur Michele Tonutti
Bien, je pense que le principal problème il y a avec le
return_sequences
paramètre dans le réseau.Cette hyper paramètre doit être réglé àFalse
pour la dernière couche ettrue
pour les autres couches précédentes.OriginalL'auteur Shobhit Srivastava