Hoe gebruik je “torch.no_grad” in PyTorch?

Hoe Gebruik Je Torch No Grad In Pytorch



De berekening van gradiënten voor de lagen van een neuraal netwerk is een ingebouwd kenmerk van het PyTorch-framework. De gebruikers kunnen de verbinding tussen aangrenzende lagen meten wanneer hellingen worden berekend in de achterwaartse pas. Dit vergt echter wel een tol van de hardware vanwege de grote hoeveelheden data die moeten worden verwerkt en, in dit geval, de “ fakkel.no_grad De methode kan worden gebruikt om de gradiëntberekening waar nodig stop te zetten.

In deze blog bespreken we hoe u de “ fakkel.no_grad ”-methode in PyTorch.

Wat is de “torch.no_grad”-methode in PyTorch?

De ' fakkel.no_grad De methode wordt gebruikt voor het beheer van de context binnen het PyTorch-ontwikkelingsframework. Het doel ervan is om de berekening van gradiënten voor de verbinding tussen opeenvolgende lagen van het deep learning-model te stoppen. Het nut van deze methode is dat wanneer gradiënten niet vereist zijn in een bepaald model, ze kunnen worden uitgeschakeld om meer hardwarebronnen toe te wijzen voor de verwerking van de trainingslus van het model.







Hoe gebruik je de “torch.no_grad”-methode in PyTorch?

Hellingen worden berekend binnen de achterwaartse pas in PyTorch. Standaard heeft PyTorch automatische differentiatie geactiveerd voor alle machine learning-modellen. Het deactiveren van gradiëntberekeningen is essentieel voor ontwikkelaars die niet over voldoende hardwareverwerkingsbronnen beschikken.



Volg de onderstaande stappen om te leren hoe u de “ fakkel.no_grad ”methode om de berekening van hellingen in PyTorch uit te schakelen:







Stap 1: Start de Colab IDE

Google Colaboratory is een uitstekende platformkeuze voor de ontwikkeling van projecten met behulp van het PyTorch-framework vanwege de speciale GPU's. Ga naar de Colab website en open een “ Nieuw notitieboekje ' zoals getoond:



Stap 2: Installeer en importeer de fakkelbibliotheek

Alle functionaliteit van PyTorch is ingekapseld door de “ fakkel ' bibliotheek. De installatie en import ervan zijn essentieel voordat u met de werkzaamheden begint. De ' !Pip ”installatiepakket van Python wordt gebruikt om bibliotheken te installeren en wordt in het project geïmporteerd met behulp van de “ importeren ” commando:

!pip installeer de fakkel
fakkel importeren

Stap 3: Definieer een PyTorch-tensor met een verloop

Voeg een PyTorch-tensor toe aan het project met behulp van de “ fakkel.tensor() methode. Geef het vervolgens een geldig verloop met behulp van de “ vereist_grad=Waar ”methode zoals weergegeven in de onderstaande code:

A = fakkel.tensor([5.0], vereist_grad=True)

Stap 4: Gebruik de “torch.no_grad”-methode om het verloop te verwijderen

Verwijder vervolgens de gradiënt van de eerder gedefinieerde tensor met behulp van de “ fakkel.no_grad methode:

met fakkel.no_grad():
B = A**2 + 16

De bovenstaande code werkt als volgt:

  • De ' no_grad() 'methode wordt gebruikt in een' met lus.
  • Van elke tensor in de lus is de gradiënt verwijderd.
  • Definieer ten slotte een voorbeeld van een rekenkundige berekening met behulp van de eerder gedefinieerde tensor en wijs deze toe aan de “ B ”variabele zoals hierboven weergegeven:

Stap 5: Controleer de verloopverwijdering

De laatste stap is het verifiëren van wat er zojuist is gedaan. De gradiënt van tensor “ A ' is verwijderd en moet in de uitvoer worden gecontroleerd met behulp van de ' afdrukken() methode:

print('Gradientberekening met torch.no_grad: ', A.grad)
print('\nOriginele Tensor: ', A)
print('\nVoorbeeld van een rekenkundige berekening: ', B)

De bovenstaande code werkt als volgt:

  • De ' afgestudeerd 'methode geeft ons de gradiënt van de tensor' A ”. Er wordt niets weergegeven in de onderstaande uitvoer omdat het verloop is verwijderd met behulp van de “ fakkel.no_grad methode.
  • De oorspronkelijke tensor laat nog steeds zien dat deze zijn gradiënt heeft, gezien vanaf de “ vereist_grad=Waar '-instructie in de uitvoer.
  • Ten slotte toont de rekenkundige voorbeeldberekening het resultaat van de eerder gedefinieerde vergelijking:

Opmerking : U kunt hier toegang krijgen tot ons Colab Notebook koppeling .

Pro-tip

De ' fakkel.no_grad ”-methode is ideaal wanneer de gradiënten niet nodig zijn of wanneer het nodig is om de verwerkingsbelasting op de hardware te verminderen. Een ander gebruik van deze methode is tijdens inferentie, omdat het model alleen wordt gebruikt voor het maken van voorspellingen op basis van nieuwe gegevens. Omdat er geen sprake is van training, is het volkomen logisch om de berekening van hellingen eenvoudigweg uit te schakelen.

Succes! We hebben u laten zien hoe u de methode 'torch.no_grad' kunt gebruiken om verlopen in PyTorch uit te schakelen.

Conclusie

Gebruik de ' fakkel.no_grad ”-methode in PyTorch door deze te definiëren in een “ met De gradiënt wordt verwijderd van de lus en van alle tensors die zich daarin bevinden. Dit zal verbeteringen in de verwerkingssnelheid opleveren en de accumulatie van gradiënten binnen de trainingslus voorkomen. In deze blog hebben we laten zien hoe dit “ fakkel.no_grad ”-methode kan worden gebruikt om de gradiënten van geselecteerde tensoren in PyTorch uit te schakelen.