Comment utiliser « torch.no_grad » dans PyTorch ?

Comment Utiliser Torch No Grad Dans Pytorch



Le calcul des gradients pour les couches d'un réseau neuronal est une fonctionnalité intégrée du framework PyTorch. Les utilisateurs peuvent évaluer la connexion entre les couches adjacentes lorsque les dégradés sont calculés lors de la passe arrière. Cependant, cela a des conséquences néfastes sur le matériel en raison des grands volumes de données à traiter et, dans ce cas, du «  torche.no_grad 'La méthode peut être utilisée pour arrêter le calcul du gradient partout où cela est nécessaire.

Dans ce blog, nous verrons comment utiliser le « torche.no_grad » méthode dans PyTorch.

Qu'est-ce que la méthode « torch.no_grad » dans PyTorch ?

Le ' torche.no_grad 'La méthode est utilisée pour la gestion du contexte dans le cadre de développement PyTorch. Son objectif est d'arrêter le calcul des gradients pour la connexion entre les couches suivantes du modèle d'apprentissage profond. L'utilité de cette méthode réside dans le fait que lorsque les gradients ne sont pas requis dans un modèle particulier, ils peuvent alors être désactivés pour allouer davantage de ressources matérielles pour le traitement de la boucle d'entraînement du modèle.







Comment utiliser la méthode « torch.no_grad » dans PyTorch ?

Les dégradés sont calculés dans la passe arrière dans PyTorch. Par défaut, PyTorch a activé la différenciation automatique pour tous les modèles d'apprentissage automatique. La désactivation du calcul de gradient est indispensable pour les développeurs ne disposant pas de ressources matérielles de traitement suffisantes.



Suivez les étapes ci-dessous pour savoir comment utiliser le « torche.no_grad ' Méthode pour désactiver le calcul des dégradés dans PyTorch :







Étape 1 : Lancez l'IDE Colab

Google Colaboratory est un excellent choix de plateforme pour le développement de projets utilisant le framework PyTorch grâce à ses GPU dédiés. Aller au Colab site web et ouvrez un ' Nouveau cahier ' comme montré:



Étape 2 : installer et importer la bibliothèque Torch

Toutes les fonctionnalités de PyTorch sont encapsulées par le « torche ' bibliothèque. Son installation et son importation sont indispensables avant de commencer les travaux. Le ' !pépin ' Le package d'installation de Python est utilisé pour installer les bibliothèques et il est importé dans le projet à l'aide du ' importer ' commande:

!pip installer la torche
importer une torche

Étape 3 : Définir un tenseur PyTorch avec un dégradé

Ajoutez un tenseur PyTorch au projet en utilisant le ' torche.tensor() ' méthode. Ensuite, donnez-lui un dégradé valide en utilisant le ' require_grad=Vrai ' comme indiqué dans le code ci-dessous :

A = torch.tensor([5.0], require_grad=True)

Étape 4 : utilisez la méthode « torch.no_grad » pour supprimer le dégradé

Ensuite, supprimez le dégradé du tenseur précédemment défini à l'aide de l'option ' torche.no_grad ' méthode:

avec torch.no_grad() :
B = A**2 + 16

Le code ci-dessus fonctionne comme suit :

  • Le ' no_grad() ' La méthode est utilisée à l'intérieur d'un ' avec ' boucle.
  • Chaque tenseur contenu dans la boucle voit son dégradé supprimé.
  • Enfin, définissez un exemple de calcul arithmétique en utilisant le tenseur défini précédemment et affectez-le au « B ' variable comme indiqué ci-dessus :

Étape 5 : Vérifiez la suppression du dégradé

La dernière étape consiste à vérifier ce qui vient d'être fait. Le gradient du tenseur ' UN ' a été supprimé et il doit être vérifié dans la sortie à l'aide du ' imprimer() ' méthode:

print('Calcul des dégradés avec torch.no_grad : ', A.grad)
print('\nTenseur original : ', A)
print('\nExemple de calcul arithmétique : ', B)

Le code ci-dessus fonctionne comme suit :

  • Le ' diplômé ' La méthode nous donne le gradient du tenseur ' UN ». Il n'en affiche aucun dans la sortie ci-dessous car le dégradé a été supprimé à l'aide de l'option ' torche.no_grad ' méthode.
  • Le tenseur d'origine montre toujours qu'il a son gradient tel que vu du «  require_grad=Vrai » dans la sortie.
  • Enfin, l'exemple de calcul arithmétique montre le résultat de l'équation définie précédemment :

Note  : Vous pouvez accéder à notre Colab Notebook à cette adresse lien .

Conseil de pro

Le ' torche.no_grad 'La méthode est idéale lorsque les dégradés ne sont pas nécessaires ou lorsqu'il est nécessaire de réduire la charge de traitement sur le matériel. Une autre utilisation de cette méthode est lors de l'inférence, car le modèle n'est utilisé que pour faire des prédictions basées sur de nouvelles données. Puisqu’aucune formation n’est impliquée, il est tout à fait logique de simplement désactiver le calcul des pentes.

Succès! Nous vous avons montré comment utiliser la méthode « torch.no_grad » pour désactiver les dégradés dans PyTorch.

Conclusion

Utilisez le ' torche.no_grad ' dans PyTorch en la définissant dans un ' avec ' La boucle et tous les tenseurs contenus à l'intérieur verront leur dégradé supprimé. Cela apportera des améliorations dans les vitesses de traitement et empêchera l’accumulation de gradients dans la boucle d’entraînement. Dans ce blog, nous avons montré comment cela « torche.no_grad 'La méthode peut être utilisée pour désactiver les dégradés des tenseurs sélectionnés dans PyTorch.