0 votes
par dans 07 - Réseaux convolutifs CNN

Bonjour,

J'ai travaillé sur le dataset GTSRB (panneaux circulation) et je tombe sur un pb. auquel je ne m'attendais pas:

Le shape du X_train, y_train est le suivant: 

(25661, 24, 24, 1) (25661,)

Le shape du X_test, y_test vaut:

(38291, 24, 24, 1) (38291,)

Le nombre de classes dans le train et le test set:

nb_classes, y_train 42 nb_classes, y_test 43

J'ai une classe en plus dans le test set.

Lorsque je lance le fitting du modèle, j'ai le message suivant:

"Received a label value of 42 which is outside the valid range of [0, 42)"

Pour info. le modèle est le suivant:

_________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d_4 (Conv2D) (None, 22, 22, 8) 80 max_pooling2d_4 (MaxPoolin (None, 11, 11, 8) 0 g2D) dropout_6 (Dropout) (None, 11, 11, 8) 0 conv2d_5 (Conv2D) (None, 9, 9, 8) 584 max_pooling2d_5 (MaxPoolin (None, 4, 4, 8) 0 g2D) dropout_7 (Dropout) (None, 4, 4, 8) 0 flatten_2 (Flatten) (None, 128) 0 dense_4 (Dense) (None, 100) 12900 dropout_8 (Dropout) (None, 100) 0 dense_5 (Dense) (None, 42) 4242

Est ce que ce message peut venir du fait que je n'ai pas le meme nb de classes dans le train et le test set ?

Merci pour votre avis!

1 Réponse

0 votes
par
sélectionné par
 
Meilleure réponse

Pb résolu.

Initialement, loss='sparse_categorical_crossentropy'

J'ai converti la target en vecteur sparse, puis modifié loss='categorical_crossentropy'

y_train_ohoe = pd.get_dummies(y_train, sparse=True)
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics='accuracy')
...