Je rencontre un problème en essayant d'entraîner mon modèle dans Keras 2.0.8 , Python 3.6.1 et un backend Tensorflow.Keras ValueError: Erreur ValueError: lors de la vérification de la cible: dense_4 attendu pour avoir la forme (None, 2) mais le tableau avec la forme (2592, 1) Python3
Message d'erreur:
ValueError: Error when checking target: expected dense_4 to have shape (None, 2) but got array with shape (2592, 1)
X_train = numpy.swapaxes(X_train, 1, 3)
X_test = numpy.swapaxes(X_test, 1, 3)
print("X_train shape: ") --> size = (2592, 1, 1366, 96)
print("-----")
print("X_test shape") --> size = (648, 1, 1366, 96)
print("-----")
print(Y_train.shape) --> size = (2592,)
print("-----")
print("Y_test shape") --> size = (648,)
extraits pertinents du Code:
K.set_image_dim_ordering('th')
K.set_image_data_format('channels_first')
def create_model(weights_path=None):
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3),activation='relu', padding="same", input_shape=(1, 1366, 96)))
model.add(Conv2D(64, (3, 3), activation='relu', dim_ordering="th"))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.1))
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.1))
model.add(Dense(16, activation='relu'))
model.add(Dense(2, activation='softmax'))
if weights_path:
model.load_weights(weights_path)
return model
model = create_model()
model.compile(loss=keras.losses.categorical_crossentropy,
optimizer=keras.optimizers.SGD(lr=0.01),
metrics=['accuracy'])
history = model.fit(X_train, Y_train,
batch_size=32,
epochs=100,
verbose=1,
validation_data=(X_test, Y_test))
ligne 142, où j'appelle model.fit() est où je reçois cette erreur
Ce que j'ai essayé de réparer erreur Referenced ces postes de débordement de la pile:
J'ai essayé de remodeler les Y_test et Y_train tableaux de numpy en utilisant le code suivant:
Y_train.reshape(2592, 2)
Y_test.reshape(648, 2)
Cependant, je reçois l'erreur suivante:
ValueError: cannot reshape array of size 2592 into shape (2592,2)
Votre MCVE est presque terminé. Quelle ligne lance l'erreur? Il y a aussi 1336 vs 1366 dans l'erreur; assurez-vous de copier le message verbatim. –
Ligne 142, qui est quand j'appelle model.fit() j'ai mis à jour la question. –
OK, l'incompatibilité de nombre provient de votre code: 'input_shape' a une valeur incorrecte dans' Conv2D'. Je suggère de passer explicitement la forme des entrées à 'create_model' plutôt que de le coder en dur. Les nombres magiques comme celui-ci sont sujets aux erreurs. –