Maison > Article > développement back-end > Pourquoi mon modèle Keras semble-t-il n'utiliser qu'une partie de mon ensemble de données Fashion MNIST pendant l'entraînement, même s'il traite 1 875 lots ?
Limitations de la formation Keras : résolution de l'utilisation partielle d'un ensemble de données
Lors de la formation d'un modèle de réseau neuronal à l'aide de Keras, il est crucial de s'assurer que l'ensemble des données est utilisé pendant la formation. Cependant, dans certains cas, les utilisateurs peuvent rencontrer des problèmes où seule une fraction des données est utilisée. Cet article explore un cas spécifique où un modèle formé sur l'ensemble de données Fashion MNIST utilise uniquement une partie des données disponibles, fournissant une explication et une solution complètes.
L'extrait de code fourni utilise la méthode model.fit() avec paramètres par défaut, qui incluent une taille de lot de 32. Cela signifie qu'au cours de chaque itération ou époque, le modèle traite 32 échantillons de l'ensemble de données d'entraînement. Dans le cas de l'ensemble de données Fashion MNIST, qui comprend 60 000 échantillons, le modèle devrait parcourir l'ensemble de données plusieurs fois pour terminer la formation. Cependant, le résultat affiché dans la console indique que le modèle termine une époque en 1875 itérations.
Cet écart se produit car la méthode model.fit() indique le nombre de lots traités pendant l'entraînement, et non le nombre total. d'échantillons. Par conséquent, dans ce cas, le modèle s'entraîne sur 1 875 lots, chacun contenant 32 échantillons, ce qui donne un total de 1 875 * 32 = 60 000 échantillons. Cela signifie que le modèle utilise effectivement l'intégralité de l'ensemble de données pour l'entraînement, malgré la barre de progression trompeuse qui affiche « 1875/1875 » à chaque époque.
Pour éviter toute confusion et suivre avec précision la progression du processus d'entraînement, il est recommandé pour calculer et afficher le nombre d’échantillons traités par époque. Ceci peut être réalisé en modifiant le code pour imprimer la progression comme suit :
<code class="python">for epoch in range(10): print(f"Current Epoch: {epoch + 1}") for batch_idx in range(1875): model.train_step((train_images[batch_idx * 32 : (batch_idx + 1) * 32], train_labels[batch_idx * 32 : (batch_idx + 1) * 32])) print(f"Batch {batch_idx + 1} processed.")</code>
En utilisant cette approche, la console affichera la progression en termes de lots et d'échantillons, offrant une compréhension claire du processus de formation et confirmer que le modèle utilise l'intégralité de l'ensemble de données comme prévu.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!