Comment définir batch_size, steps_per epoch et les étapes de validation

26

Je commence à apprendre les CNN en utilisant Keras. J'utilise le backend theano.

Je ne comprends pas comment définir des valeurs pour:

  • taille du lot,
  • pas par époque,
  • validation_steps.

Quelle devrait être la valeur définie batch_size, les étapes par époque et les étapes de validation si j'ai 240 000 échantillons dans l'ensemble d'apprentissage et 80 000 dans l'ensemble de test?

Ermene
la source
Quelles sont vos spécifications matérielles? Cela dépend En général, les gens utilisent une taille de lot de 32/64, des époques de 10 à 15, puis vous pouvez calculer les étapes par époque à partir de ce qui précède.
Aditya

Réponses:

28
  • batch_size détermine le nombre d'échantillons dans chaque mini-lot. Son maximum est le nombre de tous les échantillons, ce qui rend la descente du gradient précise, la perte diminuera vers le minimum si le taux d'apprentissage est suffisamment petit, mais les itérations sont plus lentes. Son minimum est de 1, ce qui entraîne une descente de gradient stochastique: rapide mais la direction du pas de gradient n'est basée que sur un exemple, la perte peut sauter. batch_size permet d'ajuster entre les deux extrêmes: direction précise du gradient et itération rapide. En outre, la valeur maximale de batch_size peut être limitée si votre modèle + l'ensemble de données ne tient pas dans la mémoire (GPU) disponible.
  • steps_per_epoch le nombre d'itérations de lot avant qu'une époque d'apprentissage soit considérée comme terminée. Si vous avez un ensemble d'entraînement de taille fixe, vous pouvez l'ignorer, mais cela peut être utile si vous avez un énorme ensemble de données ou si vous générez des augmentations de données aléatoires à la volée, c'est-à-dire si votre ensemble d'entraînement a une taille infinie (générée). Si vous avez le temps de parcourir l'ensemble de vos données d'entraînement, je recommande de sauter ce paramètre.
  • validation_steps similaire à steps_per_epoch mais sur l'ensemble de données de validation à la place sur les données d'apprentissage. Si vous avez le temps de parcourir l'ensemble de vos données de validation, je recommande de sauter ce paramètre.
Silpion
la source
Qu'entendez-vous par «sauter ce paramètre»? Lorsque je supprime le paramètre que j'obtiens When using data tensors as input to a model, you should specify the steps_per_epoch argument.
Nicolas Raoul
Selon la documentation, le paramètre steps_per_epoch de la méthode fit a une valeur par défaut et doit donc être facultatif: "la valeur par défaut None est égale au nombre d'échantillons dans votre jeu de données divisé par la taille du lot, ou 1 si cela ne peut pas être déterminé." Source: keras.io/models/model
Silpion
1

il y a une réponse dans Github

  1. model.fit_generator nécessite que le générateur de jeu de données d'entrée s'exécute à l'infini.
  2. steps_per_epochest utilisé pour générer une fois l'ensemble de données en appelant les steps_per_epochheures du générateur
  3. tandis que epochsdonner le nombre de fois que le modèle est entraîné sur l'ensemble de données entier.
Hong Cheng
la source