[resolu][CNN 1D] [Problème de classification][Impossible de générer une crosstab]

Bonjour à tous!

J’ai des difficultés après entrainement d’un model CNN 1D sans encombre.
je suis dans l’impossibilité de générer une table de confusion.

en preprocessing j’ai utilisé un smote.X_train y_train deviennent X_sm et y_sm
puis

scaler = StandardScaler()
X_sm =scaler.fit_transform(X_sm)
X_test = scaler.transform(X_test)

puis one hot encoder pour la target:

y_sm = to_categorical(y_sm)
y_test = to_categorical(y_test)

ensuite un reshape pour obtenir des inputs adaptés

X_train_cnn = np.reshape(X_sm, (X_sm.shape[0], X_sm.shape[1], 1))

X_test_cnn = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1))

et après entrainement
pred_class = model.predict(X_test).argmax(axis = 1)
fonctionne
mais je doit faire un flatten sur y_test car les dimensions ne correspondent pas

pred_class = model.predict(X_test).argmax(axis = 1)

confusion_matrix(y_test.flatten(), pred_class)
InvalidArgumentError: Graph execution error:

transpose expects a vector of size 3. But input(1) is a vector of size 4
	 [[{{node sequential/conv1d/Conv1D-0-TransposeNHWCToNCHW-LayoutOptimizer}}]] [Op:__inference_predict_function_442783]

Bonjour Xavier @4494
Avez vous bien défini des batch dans la construction de votre réseau ?
cf l’article suivant.

en fait la resolution est là (one hot encoder)

pred_class = model.predict(X_test).argmax(axis = 1)
rounded_labels=np.argmax(y_test, axis=1)
confusion_matrix(rounded_labels, pred_class)

après reflexion et recherche c’est bon cela fonctionne, merci Laurène

1 Like