Comment puis-je réduire encore plus la perte de valeur dans un modèle de CNN? [fermé]

0

La question

Je suis en train de construire une CNN à classer les fruits. J'ai été touchés par la forte perte de valeurs et je suis en train de le réduire autant que je le peux mais je ne suis pas sûr de savoir comment améliorer mon modèle.

Voici mon code:

model96 = tf.keras.Sequential()

#Architecture
model96.add(tf.keras.layers.Conv2D(filters = 32,
                                 kernel_size = (3, 3),
                                 activation = "relu",
                                 input_shape = (96, 96, 3)))

model96.add(tf.keras.layers.Conv2D(filters = 32,
                                 kernel_size = (3, 3),
                                 activation = "relu"))

model96.add(tf.keras.layers.MaxPooling2D(pool_size=(2, 2)))

model96.add(tf.keras.layers.Dropout(rate=0.25))

model96.add(tf.keras.layers.Flatten())

model96.add(tf.keras.layers.Dense(units=128, activation='relu'))

model96.add(tf.keras.layers.Dropout(rate=0.5))

#output layer
model96.add(tf.keras.layers.Dense(units=4, activation='softmax'))

#Loss function
model96.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

#Train model
hist96 = model96.fit(x=x_train96_norm, y=y_train, epochs=100)

#Test and Evaluate
print("Performance with test data:")
loss96, accuracy96 = model96.evaluate(x=x_test96_norm, y=y_test)
print('loss =', loss96)
print('accuracy =', accuracy96)

Au cours de la formation, de la finale de la perte de valeur a été 0.0153 et la dernière valeur de la précision a été 0.9958, cependant, lors de l'essai le modèle a marqué: loss = 1.0462701320648193 et accuracy = 0.8666666746139526

1

La meilleure réponse

2

Votre problème ressemble à un classique problème de surapprentissage. Vous pouvez ajouter EarlyStopping pour éviter cela. EarlyStopping va arrêter le processus de formation dès la validation de la perte de cesse de diminuer. Le code est assez simple:

callback = tf.keras.callbacks.EarlyStopping(monitor='loss', patience=3)

hist96 = model96.fit(x=x_train96_norm, y=y_train, epochs=100, callbacks=[callback])

2021-11-24 07:36:48

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................