logo

torch.nn dans PyTorch

PyTorch fournit le module torch.nn pour nous aider dans la création et la formation du réseau neuronal. Nous allons d'abord entraîner le réseau neuronal de base sur l'ensemble de données MNIST sans utiliser aucune fonctionnalité de ces modèles. Nous utiliserons uniquement la fonctionnalité de base du tenseur PyTorch, puis nous ajouterons progressivement une fonctionnalité de torch.nn à la fois.

torch.nn nous propose de nombreux autres cours et modules pour implémenter et former le réseau neuronal.

Le package nn contient les modules et classes suivants :

Oui Non Classe et module Description
1. torch.nn.Paramètre C'est un type de tenseur qui est à considérer comme un paramètre de module.
2. Conteneurs
1) torch.nn.Module Il s'agit d'une classe de base pour tous les modules de réseau neuronal.
2) torch.nn.Séquentiel Il s'agit d'un conteneur séquentiel dans lequel les modules seront ajoutés dans le même ordre qu'ils sont passés dans le constructeur.
3) torch.nn.ModuleList Cela contiendra les sous-modules dans une liste.
4) torch.nn.ModuleDict Cela contiendra les sous-modules dans un répertoire.
5) torch.nn.ParameterList Cela contiendra les paramètres dans une liste.
6) torch.nn.parameterDict Cela contiendra les paramètres dans un répertoire.
3. Couches de convolution
1) torch.nn.Conv1d Ce package sera utilisé pour appliquer une convolution 1D sur un signal d'entrée composé de plusieurs plans d'entrée.
2) torch.nn.Conv2d Ce package sera utilisé pour appliquer une convolution 2D sur un signal d'entrée composé de plusieurs plans d'entrée.
3) torch.nn.Conv3d Ce package sera utilisé pour appliquer une convolution 3D sur un signal d'entrée composé de plusieurs plans d'entrée.
4) torch.nn.ConvTranspose1d Ce package sera utilisé pour appliquer un opérateur de convolution transposé 1D sur une image d'entrée composée de plusieurs plans d'entrée.
5) torch.nn.ConvTranspose2d Ce package sera utilisé pour appliquer un opérateur de convolution transposé 2D sur une image d'entrée composée de plusieurs plans d'entrée.
6) torch.nn.ConvTranspose3d Ce package sera utilisé pour appliquer un opérateur de convolution transposé 3D sur une image d'entrée composée de plusieurs plans d'entrée.
7) torch.nn.Déplier Il est utilisé pour extraire des blocs locaux glissants d'un tenseur d'entrée par lots.
8) torch.nn.Fold Il est utilisé pour combiner un tableau de blocs locaux glissants dans un grand tenseur contenant.
4. Regroupement des couches
1) torch.nn.MaxPool1d Il est utilisé pour appliquer un pooling 1D max sur un signal d'entrée composé de plusieurs plans d'entrée.
2) torch.nn.MaxPool2d Il est utilisé pour appliquer un pooling max 2D sur un signal d'entrée composé de plusieurs plans d'entrée.
3) torch.nn.MaxPool3d Il est utilisé pour appliquer un pooling 3D max sur un signal d'entrée composé de plusieurs plans d'entrée.
4) torch.nn.MaxUnpool1d Il est utilisé pour calculer l'inverse partiel de MaxPool1d.
5) torch.nn.MaxUnpool2d Il est utilisé pour calculer l'inverse partiel de MaxPool2d.
6) torch.nn.MaxUnpool3d Il est utilisé pour calculer l'inverse partiel de MaxPool3d.
7) torch.nn.AvgPool1d Il est utilisé pour appliquer une mutualisation moyenne 1D sur un signal d'entrée composé de plusieurs plans d'entrée.
8) torch.nn.AvgPool2d Il est utilisé pour appliquer une mutualisation moyenne 2D sur un signal d'entrée composé de plusieurs plans d'entrée.
9) torch.nn.AvgPool3d Il est utilisé pour appliquer une mutualisation moyenne 3D sur un signal d'entrée composé de plusieurs plans d'entrée.
10) torch.nn.FractionalMaxPool2d Il est utilisé pour appliquer un pooling maximum fractionnaire 2D sur un signal d'entrée composé de plusieurs plans d'entrée.
11) torch.nn.LPPool1d Il est utilisé pour appliquer une mise en commun de puissance moyenne 1D sur un signal d'entrée composé de plusieurs plans d'entrée.
12) torch.nn.LPPool2d Il est utilisé pour appliquer une mise en commun de puissance moyenne 2D sur un signal d'entrée composé de plusieurs plans d'entrée.
13) torch.nn.AdavtiveMaxPool1d Il est utilisé pour appliquer un pooling maximum adaptatif 1D sur un signal d'entrée composé de plusieurs plans d'entrée.
14) torch.nn.AdavtiveMaxPool2d Il est utilisé pour appliquer un pooling maximum adaptatif 2D sur un signal d'entrée composé de plusieurs plans d'entrée.
15) torch.nn.AdavtiveMaxPool3d Il est utilisé pour appliquer un pooling maximum adaptatif 3D sur un signal d'entrée composé de plusieurs plans d'entrée.
16) torch.nn.AdavtiveAvgPool1d Il est utilisé pour appliquer une mise en commun moyenne adaptative 1D sur un signal d'entrée composé de plusieurs plans d'entrée.
17) torch.nn.AdavtiveAvgPool2d Il est utilisé pour appliquer un pooling moyen adaptatif 2D sur un signal d’entrée composé de plusieurs plans d’entrée.
18) torch.nn.AdavtiveAvgPool3d Il est utilisé pour appliquer une mise en commun moyenne adaptative 3D sur un signal d'entrée composé de plusieurs plans d'entrée.
5. Couches de rembourrage
1) torch.nn.ReflectionPad1d Il remplira le tenseur d'entrée en utilisant la réflexion de la limite d'entrée.
2) torch.nn.RefactionPad2d Il remplira le tenseur d'entrée en utilisant la réflexion de la limite d'entrée.
3) torch.nn.ReplicationPad1 Il remplira le tenseur d'entrée en utilisant la réplication de la limite d'entrée.
4) torch.nn.ReplicationPad2d Il remplira le tenseur d'entrée en utilisant la réplication de la limite d'entrée.
5) torch.nn.ReplicationPad3d Il remplira le tenseur d'entrée en utilisant la réplication de la limite d'entrée.
6) torch.nn.ZeroPad2d Cela remplira les limites du tenseur d'entrée avec zéro.
7) torch.nn.ConstantPad1d Il remplira les limites du tenseur d'entrée avec une valeur constante.
8) torch.nn.ConstantPad2d Il remplira les limites du tenseur d'entrée avec une valeur constante.
9) torch.nn.ConstantPad3d Il remplira les limites du tenseur d'entrée avec une valeur constante.
6. Activations non linéaires (somme pondérée, non-linéarité)
1) torch.nn.ELU Il utilisera pour appliquer la fonction élément par élément :
ELU(x)=max(0,x)+min(0,α*(exp(x)-1))
2) torch.nn.Hardshrink Il sera utilisé pour appliquer la fonction de retrait dur par élément :
torch.nn dans PyTorch
3) torch.nn.LeakyReLU Il utilisera pour appliquer la fonction élément par élément :
LeakyReLu(x)=max(0,x) + pente_négative*min(0,x)
4) torch.nn.LogSigmoïde Il utilisera pour appliquer la fonction élément par élément :
torch.nn dans PyTorch
5) torch.nn.MultiheadAttention Il est utilisé pour permettre au modèle de prendre en compte les informations provenant de différents sous-espaces de représentation.
6) torch.nn.PReLU Il sera utilisé pour appliquer la fonction élément par élément :
PReLU(x)=max(0,x)+a*min(0,x)
7) torch.nn.ReLU Il servira à appliquer la fonction d'unité linéaire rectifiée élément par élément :
ReLU(x)=max(0,x)
8) torche.nn.ReLU6 Il sera utilisé pour appliquer la fonction élément par élément :
ReLU6(x)=min(max(0,x),6)
9) torch.nn.RReLU Il sera utilisé pour appliquer la fonction d'unité linéaire rectifiée à fuite aléatoire, par élément, comme décrit dans l'article :
torch.nn dans PyTorch
10) torche.nn.SELU Il utilisera pour appliquer la fonction élément par élément comme :
SELU(x)=échelle*(max(0,x)+ min(0,a*(exp(x)-1)))

Ici α = 1,6732632423543772848170429916717 et échelle = 1,0507009873554804934193349852946.
11) torche.nn.TARGET Il utilisera pour appliquer la fonction élément par élément comme :
torch.nn dans PyTorch
12) torch.nn.Sigmoïde Il utilisera pour appliquer la fonction élément par élément comme :
torch.nn dans PyTorch
13) torch.nn.Softplus Il utilisera pour appliquer la fonction élément par élément comme :
torch.nn dans PyTorch
14) torch.nn.Softshrink Il sera utilisé pour appliquer la fonction de retrait doux par élément comme :
torch.nn dans PyTorch
15) torch.nn.Softsign Il utilisera pour appliquer la fonction élément par élément comme :
torch.nn dans PyTorch
16) torche.nn.Tanh Il utilisera pour appliquer la fonction élément par élément comme :
torch.nn dans PyTorch
17) torche.nn.Tanhshrink Il utilisera pour appliquer la fonction élément par élément comme :
Tanhshrink(x)=x-Tanh(x)
18) torch.nn.Seuil Il utilisera pour seuiller chaque élément du Tensor d'entrée. Le seuil est défini comme :
torch.nn dans PyTorch
7. Activations non linéaires (autres)
1) torch.nn.Softmin Il est utilisé pour appliquer la fonction softmin à un tenseur d'entrée à n dimensions afin de les redimensionner. Après cela, les éléments du Tensor de sortie à n dimensions se situent dans la plage 0, 1 et la somme est égale à 1. Softmin est défini comme :
torch.nn dans PyTorch
2) torch.nn.Softmax Il est utilisé pour appliquer la fonction softmax à un tenseur d'entrée à n dimensions afin de les redimensionner. Après cela, les éléments du tenseur de sortie à n dimensions se situent dans la plage 0, 1 et la somme est égale à 1. Softmax est défini comme :
torch.nn dans PyTorch
3) torch.nn.Softmax2d Il est utilisé pour appliquer SoftMax sur les fonctionnalités à chaque emplacement spatial.
4) torch.nn.LogSoftmax Il est utilisé pour appliquer la fonction LogSoftmax à un tenseur d'entrée à n dimensions. La fonction LofSoftmax peut être définie comme :
torch.nn dans PyTorch
5) torch.nn.AdaptiveLogSoftmaxWithLoss Il s'agit d'une stratégie de formation de modèles avec de grands espaces de sortie. C'est très efficace lorsque la répartition des étiquettes est très déséquilibrée
8. Couches de normalisation
1) torch.nn.BatchNorm1d Il est utilisé pour appliquer une normalisation par lots sur des entrées 2D ou 3D.
torch.nn dans PyTorch
2) torch.nn.BatchNorm2d Il est utilisé pour appliquer la normalisation par lots sur un 4D.
torch.nn dans PyTorch
3) torch.nn.BatchNorm3d Il est utilisé pour appliquer la normalisation par lots sur les entrées 5D.
torch.nn dans PyTorch
4) torch.nn.GroupNorm Il est utilisé pour appliquer une normalisation de groupe sur un mini-lot d'entrées.
torch.nn dans PyTorch
5) torch.nn.SyncBatchNorm Il est utilisé pour appliquer la normalisation par lots sur des entrées à n dimensions.
torch.nn dans PyTorch
6) torch.nn.InstanceNorm1d Il est utilisé pour appliquer une normalisation d'instance sur une entrée 3D.
torch.nn dans PyTorch
7) torch.nn.InstanceNorm2d Il permet d'appliquer une normalisation d'instance sur une entrée 4D.
torch.nn dans PyTorch
8) torch.nn.InstanceNorm3d Il est utilisé pour appliquer une normalisation d'instance sur une entrée 5D.
torch.nn dans PyTorch
9) torch.nn.LayerNorm Il est utilisé pour appliquer la normalisation des couches sur un mini-lot d'entrées.
torch.nn dans PyTorch
10) torch.nn.LocalResponseNorm Il est utilisé pour appliquer une normalisation de réponse locale sur un signal d'entrée composé de plusieurs plans d'entrée, où le canal occupe la deuxième dimension.
9. Couches récurrentes
1) torche.nn.RNN Il est utilisé pour appliquer un RNN Elman multicouche avec non-linéarité tanh ou ReLU à une séquence d'entrée. Chaque couche calcule la fonction suivante pour chaque élément de la séquence d'entrée :
ht=tanh(WeuxXt+beux+Whhtt-1+bhh)
2) torch.nn.LSTM Il est utilisé pour appliquer un RNN multicouche à mémoire à long terme et à court terme (LSTM) à une séquence d'entrée. Chaque couche calcule la fonction suivante pour chaque élément de la séquence d'entrée :
torch.nn dans PyTorch
3) torch.nn.GRU Il est utilisé pour appliquer un RNN d’unité récurrente à portes multicouches (GRU) à une séquence d’entrée. Chaque couche calcule la fonction suivante pour chaque élément de la séquence d'entrée :
torch.nn dans PyTorch
4) torch.nn.RNNCell Il est utilisé pour appliquer une cellule Elman RNN avec une non-linéarité tanh ou ReLU à une séquence d'entrée. Chaque couche calcule la fonction suivante pour chaque élément de la séquence d'entrée :
h'=tanh(Weuxx+beux+Whhh+bhh)
ReLU est utilisé à la place de tanh
5) torch.nn.LSTMCell Il est utilisé pour appliquer une cellule de mémoire à long terme (LSTM) à une séquence d’entrée. Chaque couche calcule la fonction suivante pour chaque élément de la séquence d'entrée :
torch.nn dans PyTorch
Où σ est la fonction sigmoïde et * est le produit Hadamard.
6) torch.nn.GRUCell Il est utilisé pour appliquer une cellule d'unité récurrente fermée (GRU) à une séquence d'entrée. Chaque couche calcule la fonction suivante pour chaque élément de la séquence d'entrée :
torch.nn dans PyTorch
dix. Couches linéaires
1) torch.nn.Identité Il s'agit d'un opérateur d'identité d'espace réservé qui est insensible aux arguments.
2) torch.nn.Linéaire Il permet d'appliquer une transformation linéaire aux données entrantes :
y = xAT+b
3) torch.nn.Bilinéaire Il permet d'appliquer une transformation bilinéaire aux données entrantes :
y = x1Hache2+b
onze. Couches abandonnées
1) torch.nn.Dropout Il est utilisé pour la régularisation et la prévention de la co-adaptation des neurones. Un facteur de torch.nn dans PyTorchpendant la formation, le résultat est mis à l'échelle. Cela signifie que le module calcule une fonction d'identité lors de l'évaluation.
2) torch.nn.Dropout2d Si les pixels adjacents dans les cartes de fonctionnalités sont corrélés, alors torch.nn.Dropout ne régularisera pas les activations et diminuera le taux d'apprentissage effectif. Dans ce cas, torch.nn.Dropout2d() est utilisé pour promouvoir l'indépendance entre les cartes de fonctionnalités.
3) torch.nn.Dropout3d Si les pixels adjacents dans les cartes de fonctionnalités sont corrélés, alors torch.nn.Dropout ne régularisera pas les activations et diminuera le taux d'apprentissage effectif. Dans ce cas, torch.nn.Dropout2d () est utilisé pour promouvoir l'indépendance entre les cartes de fonctionnalités.
4) torch.nn.AlphaDropout Il est utilisé pour appliquer Alpha Dropout sur l’entrée. Alpha Dropout est un type de Dropout qui conserve la propriété d'auto-normalisation.
12. Couches clairsemées
1) torch.nn.Intégration Il est utilisé pour stocker les intégrations de mots et les récupérer à l'aide d'index. L'entrée du module est une liste d'index et la sortie est l'intégration de mots correspondante.
2) torch.nn.EmbeddingBag Il est utilisé pour calculer les sommes ou la moyenne des « sacs » d'intégration sans instancier l'intégration intermédiaire.
13. Fonction de distance
1) torch.nn.CosineSimilarité Il renverra la similarité cosinus entre x1 et x2, calculée selon dim.
torch.nn dans PyTorch
2) torch.nn.PairwiseDistance Il calcule la distance par paire par lot entre les vecteurs v1, v2 en utilisant la norme p :
torch.nn dans PyTorch
14. Fonction de perte
1) torch.nn.L1Perte Il est utilisé pour un critère qui mesure l'erreur absolue moyenne entre chaque élément de l'entrée x et la cible y. La perte non réduite peut être décrite comme suit :
l(x,y)=L={l1,...,ln},ln=|xn-etn|,
Où N est la taille du lot.
2) torch.nn.MSELoss Il est utilisé pour un critère qui mesure l'erreur quadratique moyenne entre chaque élément de l'entrée x et la cible y. La perte non réduite peut être décrite comme suit :
l(x,y)=L={l1,...,ln},ln=(xn-etn)2,
Où N est la taille du lot.
3) torch.nn.CrossEntropyLoss Ce critère combine nn.LogSoftmax() et nn.NLLLoss() en une seule classe. C'est utile lorsque nous formons un problème de classification avec des classes C.
4) torch.nn.CTCLose La perte de classification temporelle connexionniste calcule la perte entre une série temporelle continue et une séquence cible.
5) torch.nn.NLLLoss La perte de log-vraisemblance négative est utilisée pour entraîner un problème de classification avec des classes C.
6) torch.nn.PoissonNLLPerte La perte de log-vraisemblance négative avec la distribution de Poisson de t
target~Poisson(input)loss(input,target)=input-target*log(target!)la cible.
7) torch.nn.KLDivLoss Il s'agit d'une mesure de distance utile pour la distribution continue, et elle est également utile lorsque nous effectuons une régression directe sur l'espace de distribution continue de la sortie.
8) torch.nn.BCELoss Il est utilisé pour créer un critère qui mesure l'entropie croisée binaire entre la cible et la sortie. La perte non réduite peut être décrite comme suit :
l(x,y)=L={l1,...,ln},ln=-vn[etn*logxn+ (1 ann)*journal(1-xn)],
Où N est la taille du lot.
9) torch.nn.BCEWithLogitsLoss Il combine une couche sigmoïde et le BCELoss en une seule classe. Nous pouvons profiter de l’astuce log-sum-exp pour la stabilité numérique en combinant l’opération en une seule couche.
10) torch.nn.MarginRankingLoss Il crée un critère qui mesure la perte des entrées données x1, x2, deux tenseurs de mini-lot 1D et un tenseur de mini-lot 1D d'étiquette y qui contient 1 ou -1. La fonction de perte pour chaque échantillon du mini-lot est la suivante :
perte(x,y)=max(0,-y*(x1-X2)+marge
11) torch.nn.HingeEmbeddingLoss HingeEmbeddingLoss mesure la perte d'un tenseur d'entrée x et d'un tenseur d'étiquettes y qui contiennent 1 ou -1. Il est utilisé pour mesurer si deux entrées sont similaires ou différentes. La fonction de perte est définie comme :
torch.nn dans PyTorch
12) torch.nn.MultiLabelMarginLoss Il est utilisé pour créer un critère qui optimise une perte charnière multi-classes multi-classification entre l'entrée x et la sortie y.
torch.nn dans PyTorch
13) torch.nn.SmoothL1Loss Il est utilisé pour créer un critère qui utilise un terme au carré si l'erreur absolue par élément tombe en dessous de 1 et un terme L1 dans le cas contraire. Elle est également connue sous le nom de perte de Huber :
torch.nn dans PyTorch
14) torch.nn.SoftMarginLoss Il est utilisé pour créer un critère qui optimise la perte logistique de classification en deux classes entre le tenseur d'entrée x et le tenseur cible y qui contiennent 1 ou -1.
torch.nn dans PyTorch
15) torch.nn.MultiLabelSoftMarginLoss Il est utilisé pour créer un critère qui optimise la perte multi-étiquettes un contre tous en fonction de l'entropie maximale entre l'entrée x et la cible y de taille (N, C).
torch.nn dans PyTorch
16) torch.nn.CosineEmbeddingLoss Il est utilisé pour créer un critère qui mesure la perte de tenseurs d'entrée donnés x1, x2 et une étiquette de tenseur y avec les valeurs 1 ou -1. Il est utilisé pour mesurer si deux entrées sont similaires ou différentes, en utilisant la distance cosinusoïdale.
torch.nn dans PyTorch
17) torch.nn.MultiMarginLoss Il est utilisé pour créer un critère qui optimise une perte charnière de classification multi-classe entre l'entrée x et la sortie y.
torch.nn dans PyTorch
18) torch.nn.TripletMarginLoss Il est utilisé pour créer un critère qui mesure la perte de triplet d'un tenseur d'entrée donné x1, x2, x3 et d'une marge d'une valeur supérieure à 0. Il est utilisé pour mesurer une similarité relative entre les échantillons. Un triplet est composé d'une ancre, d'un exemple positif et d'un exemple négatif.
L(une,p,n)=max{d(uneje,pje)-d(uneje,nje)+marge,0}
quinze. Couches de vision
1) torch.nn.PixelShuffle Il permet de réarranger les éléments dans un tenseur de forme(*,C×r2,H,W) en un tenseur de forme (*,C,H×r,W,r)
2) torch.nn.Upsample Il est utilisé pour suréchantillonner des données multicanaux 1D, 2D ou 3D données.
3) torch.nn.upsamplingNearest2d Il est utilisé pour appliquer un suréchantillonnage 2D du plus proche voisin à un signal d'entrée composé de plusieurs canaux d'entrée.
4) torch.nn.UpsamplingBilinear2d Il est utilisé pour appliquer un suréchantillonnage bilinéaire 2D à un signal d'entrée composé de plusieurs canaux d'entrée.
16. Couches DataParallel (multi-GPU, distribuées)
1) torch.nn.DataParallel Il est utilisé pour implémenter le parallélisme des données au niveau du module.
2) torch.nn.DistributedDataParallel Il est utilisé pour implémenter le parallélisme de données distribué, basé sur le package torch.distributed au niveau du module.
3) torch.nn.DistributedDataParallelCPU Il est utilisé pour implémenter le parallélisme de données distribué pour le CPU au niveau du module.
17. Utilitaires
1) torch.nn.clip_grad_norm_ Il est utilisé pour découper la norme de gradient d'un itérable de paramètres.
2) torch.nn.clip_grad_value_ Il est utilisé pour découper la norme de gradient d'un itérable de paramètres à la valeur spécifiée.
3) torch.nn.parameters_to_vector Il est utilisé pour convertir les paramètres en un seul vecteur.
4) torch.nn.vector_to_parameters Il est utilisé pour convertir un vecteur en paramètres.
5) torch.nn.weight_norm Il est utilisé pour appliquer la normalisation du poids à un paramètre dans le module donné.
6) torch.nn.remove_weight_norm Il est utilisé pour supprimer la normalisation du poids et le reparamétrage d'un module.
7) torch.nn.spectral_norm Il est utilisé pour appliquer la normalisation spectrale à un paramètre dans le module donné.
8) torch.nn.PackedSequence Il sera utilisé pour contenir les données et la liste des batch_sizes d'une séquence compressée.
9) torch.nn.pack_padded_sequence Il est utilisé pour emballer un Tensor contenant des séquences rembourrées de longueur variable.
10) torch.nn.pad_packed_sequence Il est utilisé pour compléter un lot emballé de séquences de longueur variable.
11) torch.nn.pad_sequence Il est utilisé pour compléter une liste de tenseurs de longueur variable avec une valeur de remplissage.
12) torch.nn.pack_sequence Il est utilisé pour regrouper une liste de tenseurs de longueur variable
13) torch.nn.remove_spectral_norm Il est utilisé pour supprimer la normalisation spectrale et le reparamétrage d'un module.

Référence:

https://pytorch.org/docs/stable/nn.html