J'utilise Python Keras package
pour réseau de neurones. Ceci est le lien . Est batch_size
égal au nombre d'échantillons de test? De Wikipedia nous avons cette information:
Cependant, dans d'autres cas, l'évaluation du gradient de somme peut nécessiter des évaluations coûteuses des gradients de toutes les fonctions de sommation. Lorsque l'ensemble d'apprentissage est énorme et qu'il n'existe pas de formules simples, évaluer les sommes des gradients devient très coûteux, car évaluer le gradient nécessite d'évaluer tous les gradients des fonctions de sommation. Pour réduire les coûts de calcul à chaque itération, la descente à gradient stochastique échantillonne un sous-ensemble de fonctions de sommande à chaque étape. Ceci est très efficace dans le cas de problèmes d’apprentissage automatique à grande échelle.
Les informations ci-dessus décrivent les données de test? Est-ce la même chose que batch_size
dans keras (nombre d'échantillons par mise à jour de gradient)?
la source
Réponses:
La taille du lot définit le nombre d'échantillons qui seront propagés sur le réseau.
Par exemple, supposons que vous avez 1050 échantillons d'apprentissage et que vous souhaitez définir un nombre
batch_size
égal à 100. L'algorithme extrait les 100 premiers échantillons (du 1er au 100e) de l'ensemble de données d'apprentissage et forme le réseau. Ensuite, il prélève les 100 derniers échantillons (du 101 au 200) et entraîne à nouveau le réseau. Nous pouvons continuer à suivre cette procédure jusqu'à ce que tous les échantillons soient propagés sur le réseau. Un problème peut survenir avec le dernier ensemble d'échantillons. Dans notre exemple, nous avons utilisé 1050 qui n'est pas divisible par 100 sans reste. La solution la plus simple consiste simplement à obtenir les 50 derniers échantillons et à former le réseau.Avantages de l’utilisation d’une taille de lot <nombre de tous les échantillons:
Cela nécessite moins de mémoire. Etant donné que vous entraînez le réseau en utilisant moins d'échantillons, la procédure de formation globale nécessite moins de mémoire. Cela est particulièrement important si vous ne pouvez pas insérer l'intégralité du jeu de données dans la mémoire de votre ordinateur.
Généralement, les réseaux s’entraînent plus rapidement avec des mini-lots. C'est parce que nous mettons à jour les poids après chaque propagation. Dans notre exemple, nous avons propagé 11 lots (10 d'entre eux avaient 100 échantillons et 1, 50 échantillons) et après chacun d'entre eux, nous avons mis à jour les paramètres de notre réseau. Si nous utilisions tous les échantillons lors de la propagation, nous ne ferions qu'une mise à jour pour le paramètre du réseau.
Inconvénients de l’utilisation d’une taille de lot <nombre de tous les échantillons:
Stochastic est juste un mini-lot
batch_size
égal à 1. Dans ce cas, le gradient change de direction encore plus souvent qu'un gradient de mini-lot.la source
batch_size=1
. L'idée derrière l'apprentissage en ligne est que vous mettez à jour votre modèle dès que vous voyez l'exemple. Avec une taille de lot plus grande, cela signifie que vous devez d'abord parcourir plusieurs échantillons avant de procéder à la mise à jour. Dans RNN, la taille du lot peut avoir différentes significations. En général, il est courant de scinder une séquence d’entraînement en une fenêtre de taille fixe (10 mots, par exemple). Dans ce cas, inclure 100 de ces fenêtres pendant la formation signifiera que vous avezbatch_size=100
.Dans la terminologie du réseau de neurones:
Exemple: si vous avez 1000 exemples de formation et que la taille de votre lot est de 500, il vous faudra 2 itérations pour terminer une époque.
Pour votre information: taille du lot de compromis par rapport au nombre d'itérations pour former un réseau de neurones
la source
Lorsque vous résolvez avec un processeur un problème d'optimisation, vous appliquez itérativement un algorithme sur certaines données d'entrée. Dans chacune de ces itérations, vous mettez généralement à jour une métrique de votre problème en effectuant des calculs sur les données. Désormais, lorsque la taille de vos données est importante, il peut s’avérer nécessaire de consacrer beaucoup de temps à chaque itération et de consommer beaucoup de ressources. Donc, parfois, vous choisissez d'appliquer ces calculs itératifs sur une partie des données pour gagner du temps et économiser des ressources de calcul. Cette partie correspond à batch_size et le processus est appelé traitement par lots (dans Neural Network Lingo). Lorsque vous appliquez vos calculs à toutes vos données, vous effectuez un traitement de données en ligne. Je suppose que la terminologie vient des années 60 et même avant. Est-ce que quelqu'un se souvient de la. batte des fichiers DOS? Mais bien sûr, le concept incarné pour désigner un fil ou une partie des données à utiliser.
la source
La documentation
Keras
sur la taille du lot se trouve sous lafit
fonction dans la page Modèles (API fonctionnelle) .Si vous avez un petit jeu de données, il est préférable d’adapter la taille du lot à la taille des données de formation. Commencez par essayer avec un petit lot puis augmentez pour gagner du temps. Comme mentionné par itdxer , il existe un compromis entre précision et rapidité.
la source