0
votes

Tensorflow Keras - Haute précision lors de la formation, une faible précision pendant la prédiction

J'ai un modèle de CNN multiclasse très basique pour classer les véhicules dans 4 classes [Pickup, Berline, SUV, VAN] CODE> que j'ai écrit à l'aide de TENSORFLOW 2.0 TF.KERAS:

tf.Tensor(
[[ 42  85 109   3]
 [ 72 137 177   4]
 [ 91 171 228  11]
 [  9  12  16   1]], shape=(4, 4), dtype=int32)
  • Taille de l'image: 3x128x128 (Données planes) Li>
  • Nombre d'époques: 45 li>
  • Taille du lot: 32 Li>
  • Fonction de perte: tf.keras.losses.categoricalcrossentropie (de_logits = true) code> li>
  • Optimizer: optimiseur = tf.optimizers.adam code> li>
  • Taille des données de formation: 67,5% de toutes les données li>
  • Taille de la validation: 12,5% de toutes les données li>
  • Taille des données de test: 20% de toutes les données li> ul>

    J'ai un jeu de données non équilibré, qui a la distribution suivante: p> xxx pré>

    pour cette raison, j'ai utilisé des poids de classe pour atténuer ce déséquilibre: P >

    test_images = np.array([x[0].numpy() for x in list(labeled_ds_test)])
    test_labels = np.array([x[1].numpy() for x in list(labeled_ds_test)])
    test_predictions = model.predict(test_images, batch_size=32)
    print(tf.math.confusion_matrix(tf.argmax(test_labels, 1), tf.argmax(test_predictions, 1)))
    


1 commentaires

Lorsque la précision de la formation est élevée et que la précision de la prédiction est faible, c'est un signe sûr de survoler. Je recommande de regarder dans les causes et les solutions de survêtement.


3 Réponses :


0
votes

igree @gallen. Il y a plusieurs raisons qui peuvent provoquer un survêtement et plusieurs méthodes de prévention du survêtement. L'une des bonnes solutions est l'ajout d'abandon entre les couches. Vous pouvez voir Stackoverflow Réponse et Article VertaScience


0 commentaires

0
votes

Il y a un survêtement bien sûr mais répondons aux questions.

Pour la première question, le faible nombre de données de validation joue un rôle pour la raison pour laquelle la perte est inférieure aux données de formation que la perte est la somme de toutes les différences de y_true et y_prued .

Quant à la deuxième question Comment la précision du test peut-elle être inférieure à celle attendue, même si la validation ne montre aucun signe de survêtement?

La distribution du jeu de validation doit être identique à celle du test de test pour ne pas être miss.

Donc, mon conseil est de vérifier la distribution du train, de la validation, des jeux de données de test séparément. assurez-vous qu'ils sont les mêmes.


0 commentaires

0
votes

Vous devez diviser correctement votre jeu de données, une formation de 70% et une validation de 30%, puis vérifiez votre modèle sur un nouvel ensemble de données comme des données de test celles-ci pourraient être utiles car l'apprentissage automatique est tout au sujet des essais et des erreurs.


0 commentaires