Entraînement avec PyTorch
nn.Module, DataLoader, boucle d'entraînement, momentum/Adam, régularisation
Dans ce chapitre, vous apprendrez à
- Écrire un modèle et une boucle d'entraînement complète en PyTorch
- Choisir un optimiseur, des mini-lots et une régularisation
- Diagnostiquer un entraînement qui ne converge pas
Outils : PyTorch
18 exercices
Chaque exercice est corrigé automatiquement, dans le navigateur. Les énoncés complets sont accessibles avec un compte.
À quoi ça sert dans la vraie vie
Personne ne réécrit la rétropropagation à chaque projet : chercheurs et ingénieurs utilisent un outil, et PyTorch est l'un des plus répandus. - Les laboratoires d'IA. Créé chez Facebook (aujourd'hui Meta) et…
Cours : les tenseurs, des tableaux NumPy avec deux talents de plus
Jusqu'ici, vos réseaux vivaient dans des tableaux NumPy, et vous écriviez chaque dérivée à la main. PyTorch range les nombres dans des tenseurs : des tableaux qui se manipulent presque comme ceux de NumPy (
.shape…Cours : PyTorch ne fait que donner des noms
Aux chapitres précédents, vous avez fabriqué à la main chaque pièce d'un réseau : un moteur d'autograd (votre classe
Var, qui se souvient de ses opérations et sait faire.backward()), une passe forward…Adieu au numpy
Au chapitre précédent, vous avez construit un réseau de neurones à la main avec numpy : forward pass, backward pass, mise à jour des poids... Ça fonctionne, mais c'est fragile et pénible à maintenir. Chaque nouvelle…
Données en flux
Votre réseau fonctionne sur 4 points XOR. Mais dans la réalité, vous aurez 10 000, 100 000, voire des millions d'exemples. Impossible de tout charger en mémoire et de calculer le gradient sur tout le dataset à chaque…
Cours : du « tout d'un coup » aux mini-lots
À l'exercice « Adieu au numpy », vous passiez toutes les données d'un coup :
model(X). Avec 4 points XOR, aucun souci. Avec un million de points, ça ne tient plus en mémoire. La solution, vous la connaissez déjà…Réseau qui ne converge pas
Un collègue vous fait passer son code : un petit réseau qui doit classer des points en 3 catégories. Il tourne, ne plante jamais, s'entraîne sagement pendant 200 époques... et reste scotché à 33% d'accuracy, tout juste…
Modèle pré-entraîné
Vous avez 50 images de chats et 50 images de chiens. Entraîner un CNN depuis zéro avec 100 images ? Bonne chance pour dépasser 55%. Mais quelqu'un vous donne un extracteur de features pré-entraîné : un réseau qui a…
Cours : transfer learning, ne pas réapprendre ce qui est déjà appris
Entraîner un réseau de vision depuis zéro demande des millions d'images. Vous n'en avez que 100. L'astuce : réutiliser un réseau pré-entraîné sur des millions d'images, qui a déjà appris à transformer une image en…
Sauver et charger
Vous avez entraîné un modèle pendant 30 minutes. Votre ordinateur plante. Tout est perdu. Ou bien : vous entraînez un modèle sur votre machine, mais vous devez l'utiliser sur un serveur de production. Comment transférer…
Cours : sauvegarder un modèle, ses poids pas l'objet
Un modèle entraîné = une architecture (les couches) + des poids (les nombres appris). On ne sauvegarde que les poids : c'est portable et robuste. PyTorch les expose sous forme de dictionnaire, le
state_dict.…Tournoi à quatre épreuves
Un tournoi de modélisation vous ouvre ses quatre épreuves. Le règlement est strict : une seule procédure d'entraînement, lancée telle quelle sur les quatre jeux, sans réglage à la main d'une épreuve à l'autre. Les…
Vallée étroite
Premier jour au laboratoire. Vous rejoignez une équipe qui entraîne des réseaux de neurones, et l'on vous confie leur outil de descente. Entraîner un réseau, c'est faire glisser ses poids vers le fond d'un paysage…
Pas intelligent
Le momentum aide, mais il utilise le même taux d'apprentissage pour tous les poids. Or dans votre réseau, certains poids reçoivent des gradients 100 fois plus grands que d'autres. Un learning rate unique est soit trop…
Filet anti-triche
Votre réseau atteint 100% sur les données d'entraînement, mais seulement 60% sur de nouvelles données. Il a mémorisé les exemples au lieu d'apprendre la règle générale. Le problème : comment forcer un réseau…
Tirage au sort
Même architecture. Même optimiseur. Même dataset. Pourtant, selon la façon dont vous initialisez les poids, l'entraînement réussit ou échoue complètement. On vous fournit
train(params)qui entraîne un réseau (3…Normalisateur
Votre réseau profond s'entraîne bien sur certains datasets, mais sur d'autres les activations internes explosent ou s'effondrent à zéro au fil des couches, et l'entraînement diverge. On vous fournit…
Frein progressif
Votre réseau apprend trop agressivement : avec un learning rate fixe trop grand, l'entraînement diverge (la loss explose vers NaN). Si vous le baissez trop, l'apprentissage devient lent. C'est comme si les pas de la…