Com utilitzar 'torch.no_grad' a PyTorch?

Com Utilitzar Torch No Grad A Pytorch



El càlcul de gradients per a les capes d'una xarxa neuronal és una característica integrada del marc PyTorch. Els usuaris poden mesurar la connexió entre capes adjacents quan es calculen els gradients al pas cap enrere. No obstant això, això passa factura al maquinari a causa dels grans volums de dades que s'han de processar i, en aquest cas, el ' torch.no_grad ” es pot utilitzar per aturar el càlcul del gradient sempre que sigui necessari.

En aquest bloc, parlarem de com utilitzar el ' torch.no_grad ” mètode a PyTorch.

Què és el mètode 'torch.no_grad' a PyTorch?

El ' torch.no_grad ” s'utilitza per a la gestió del context dins del marc de desenvolupament PyTorch. El seu propòsit és aturar el càlcul de gradients per a la connexió entre capes posteriors del model d'aprenentatge profund. La utilitat d'aquest mètode és quan no es requereixen gradients en un model en particular, llavors es poden desactivar per assignar més recursos de maquinari per al processament del bucle d'entrenament del model.







Com utilitzar el mètode 'torch.no_grad' a PyTorch?

Els gradients es calculen dins del pas cap enrere a PyTorch. Per defecte, PyTorch té activada la diferenciació automàtica per a tots els models d'aprenentatge automàtic. La desactivació del càlcul del gradient és essencial per als desenvolupadors que no disposen de recursos suficients de processament de maquinari.



Seguiu els passos següents per aprendre a utilitzar el ' torch.no_grad ” mètode per desactivar el càlcul de gradients a PyTorch:







Pas 1: inicieu l'IDE Colab

Google Colaboratory és una excel·lent opció de plataforma per al desenvolupament de projectes amb el marc PyTorch a causa de les seves GPU dedicades. Aneu al Colab lloc web i obre un ' Nou quadern ' com es mostra:



Pas 2: instal·leu i importeu la biblioteca Torch

Tota la funcionalitat de PyTorch està encapsulada pel ' torxa ” biblioteca. La seva instal·lació i importació són imprescindibles abans de començar a treballar. El ' !pip ” El paquet d'instal·lació de Python s'utilitza per instal·lar biblioteques i s'importa al projecte mitjançant el “ importar ' comandament:

!pip instal·lar torxa
torxa d'importació

Pas 3: definiu un tensor PyTorch amb un degradat

Afegiu un tensor PyTorch al projecte mitjançant el ' torch.tensor() ” mètode. A continuació, doneu-li un gradient vàlid utilitzant el ' requires_grad=Veritat ” mètode tal com es mostra al codi següent:

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

Pas 4: utilitzeu el mètode 'torch.no_grad' per eliminar el degradat

A continuació, elimineu el degradat del tensor definit anteriorment utilitzant el ' torch.no_grad ” mètode:

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

El codi anterior funciona de la següent manera:

  • El ' no_grad() El mètode s'utilitza dins d'un amb ” bucle.
  • Cada tensor contingut dins del bucle té el seu gradient eliminat.
  • Per últim, definiu un càlcul aritmètic de mostra utilitzant el tensor definit anteriorment i assigneu-lo al ' B ” variable tal com es mostra a dalt:

Pas 5: verifiqueu l'eliminació del degradat

L'últim pas és comprovar el que s'acaba de fer. El gradient del tensor ' A ' s'ha eliminat i s'ha de comprovar a la sortida mitjançant el ' imprimir() ” mètode:

print('Càlcul de gradients amb torch.no_grad: ', A.grad)
print('\nTensor original: ', A)
print('\nMostra de càlcul aritmètic: ', B)

El codi anterior funciona de la següent manera:

  • El ' grau El mètode 'ens dóna el gradient del tensor' A ”. No en mostra cap a la sortida següent perquè el degradat s'ha eliminat mitjançant el ' torch.no_grad ” mètode.
  • El tensor original encara mostra que té el seu gradient vist des del ' requires_grad=Veritat ” declaració a la sortida.
  • Finalment, el càlcul aritmètic de mostra mostra el resultat de l'equació definida anteriorment:

Nota : Podeu accedir al nostre quadern Colab aquí enllaç .

Pro-Tip

El ' torch.no_grad ” El mètode és ideal quan no es necessiten els gradients o quan cal reduir la càrrega de processament del maquinari. Un altre ús d'aquest mètode és durant la inferència perquè el model només s'utilitza per fer prediccions basades en dades noves. Com que no hi ha cap entrenament, té tot el sentit desactivar simplement el càlcul de gradients.

Èxit! Us hem mostrat com utilitzar el mètode 'torch.no_grad' per desactivar els degradats a PyTorch.

Conclusió

Utilitzar el ' torch.no_grad ” a PyTorch definint-lo dins d'un “ amb ” i tots els tensors continguts dins tindran el seu degradat eliminat. Això comportarà millores en la velocitat de processament i evitarà l'acumulació de gradients dins del bucle d'entrenament. En aquest bloc, hem ensenyat com aquest ' torch.no_grad ” es pot utilitzar per desactivar els gradients dels tensors seleccionats a PyTorch.