[Apprentissage rapide] Introduction à Pytorch (XNUMX): implémenter la régression MLP et apprendre les bases de PyTorch

La dernière fois, j'ai examiné comment gérer la torche, qui est la base de PyTorch.

Cette fois, je voudrais implémenter la régression MLP (Multilayer perceptron) dans PyTorch et voir les principaux packages PyTorch.

Flux global

Le flux global de mise en œuvre du modèle est le suivant. Les nombres entre parenthèses sont les packages PyTorch utilisés à ce moment-là.

  • Création d'un jeu de données d'entrée, traitement itératif (Dataset, Dataloader)
  • Définition du réseau de neurones (nn.Module)
  • Calcul de perte, gradient propagé aux paramètres du réseau (nn.Module)
  • Mettre à jour les pondérations du réseau (Optimaizer)

Principaux packages PyTorch

Indépendamment de PyTorch, de nombreux frameworks d'apprentissage en profondeur proposent divers packages pour simplifier la mise en œuvre. Les principaux éléments de PyTorch sont:

torche.tensorTableau multidimensionnel. Structure de données utilisée dans PyTorch.
torche.autogradImplémentez la propagation avant / arrière.Prend en charge l'opération de différenciation automatique pour Tensor telle que la propagation arrière (backward ()).
torche.utils.dataIl comprend des utilitaires tels que "Dataset" qui collecte les données à saisir et son étiquette sous forme d'ensemble, et "Dataloader" qui extrait les données de l'ensemble de données dans un mini-lot et les transmet au modèle.
torche.nn.ModuleUtilisé pour construire des réseaux de neurones.Responsable de l'encapsulation des paramètres tels que l'enregistrement et le chargement des modèles et le passage au GPU.
torche.optimVous permet d'utiliser des algorithmes d'optimisation de paramètres tels que SDG et Adam.
Principaux packages PyTorch

Implémentation du modèle

Créer un jeu de données

Cette fois, nous préparerons sin (5x) plus des nombres aléatoires comme données d'entraînement avec numpy.from_numpy()Convertissez en torch.tensor avec.

Définition du modèle

Dans pytorch, le modèle est défini comme une "classe python" qui hérite de la classe nn.Module.

classe MLP (nn.Module): La classe MLP définie hérite de la classe parente nn.
def init (): Reçoit les arguments et instancie
super (MLP, auto) .init (): Hériter de la classe parent avec la super fonction
def avant (soi, x): Fonctionne lorsque la fonction est appelée après l'instanciation. Lorsque vous définissez la fonction avant, la fonction arrière (calcul du gradient) est également définie automatiquement.

.parameters()Vous pouvez obtenir la structure et les paramètres du réseau avec.

Calcul de perte / rétropropagation / mise à jour du poids

Pour comprendre le comportement individuel, nous allons prendre une donnée de x et la saisir dans le réseau neuronal pour voir comment les paramètres changent en raison des calculs d'erreurs et des mises à jour de poids.

Essayez de tourner la boucle d'apprentissage

Exécutez le flux ci-dessus pour chaque lot pour former le réseau neuronal.
DatasetRenvoie un ensemble de données et l'étiquette correspondante,DataLoaderEst une classe qui renvoie des données en taille de lot.

Visualisation du graphe de calcul

La structure du MLP à 3 couches créée cette fois peut être visualisée à l'aide d'un package python appelé torchviz.parameters()S'il vous plaît, quand cela ne suffit pas.

Jusqu'à présent, nous avons identifié PyTorch et ses principaux packages PyTorch grâce à l'implémentation de la régression MLP.