Ako používať „torch.no_grad“ v PyTorch?

Ako Pouzivat Torch No Grad V Pytorch



Výpočet gradientov pre vrstvy neurónovej siete je vstavaná funkcia rámca PyTorch. Používatelia môžu merať spojenie medzi susednými vrstvami, keď sa gradienty počítajú v spätnom prechode. To si však vyžiada daň na hardvéri z dôvodu veľkého množstva údajov, ktoré je potrebné spracovať, a v tomto prípade „ pochodeň.no_grad ” metódu možno použiť na zastavenie výpočtu gradientu, kedykoľvek je to potrebné.

V tomto blogu budeme diskutovať o tom, ako používať „ pochodeň.no_grad “ metóda v PyTorch.

Čo je metóda „torch.no_grad“ v PyTorch?

' pochodeň.no_grad ” metóda sa používa na správu kontextu v rámci vývojového rámca PyTorch. Jeho účelom je zastaviť výpočet gradientov pre prepojenie medzi nasledujúcimi vrstvami modelu hlbokého učenia. Užitočnosť tejto metódy je, keď v konkrétnom modeli nie sú potrebné gradienty, potom ich možno deaktivovať, aby sa pridelilo viac hardvérových zdrojov na spracovanie trénovacej slučky modelu.







Ako používať metódu „torch.no_grad“ v PyTorch?

Prechody sa počítajú v rámci spätného prechodu v PyTorch. V predvolenom nastavení má PyTorch aktivovanú automatickú diferenciáciu pre všetky modely strojového učenia. Deaktivácia výpočtu gradientu je nevyhnutná pre vývojárov, ktorí nemajú dostatočné prostriedky na hardvérové ​​spracovanie.



Postupujte podľa krokov nižšie, aby ste sa naučili, ako používať „ pochodeň.no_grad ” metóda na zakázanie výpočtu gradientov v PyTorch:







Krok 1: Spustite vývojové prostredie Colab

Google Colaboratory je vynikajúcou voľbou platformy pre vývoj projektov využívajúcich rámec PyTorch vďaka svojim vyhradeným GPU. Choďte do Colab webovej stránky a otvorte ' Nový notebook ' ako je znázornené:



Krok 2: Nainštalujte a importujte knižnicu pochodne

Všetky funkcie PyTorch sú zapuzdrené „ fakľa “knižnica. Jeho inštalácia a dovoz sú nevyhnutné pred začatím prác. ' !pip “ inštalačný balík Pythonu sa používa na inštaláciu knižníc a importuje sa do projektu pomocou „ importovať 'príkaz:

!pip nainštalovať pochodeň
dovozová baterka

Krok 3: Definujte PyTorch tenzor s gradientom

Pridajte do projektu tenzor PyTorch pomocou „ pochodeň.tensor() “. Potom mu zadajte platný gradient pomocou „ vyžaduje_grad=Pravda “, ako je uvedené v kóde nižšie:

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

Krok 4: Na odstránenie prechodu použite metódu „torch.no_grad“.

Potom odstráňte gradient z predtým definovaného tenzora pomocou „ pochodeň.no_grad “ metóda:

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

Vyššie uvedený kód funguje nasledovne:

  • ' no_grad() “ metóda sa používa vo vnútri “ s “slučka.
  • Každý tenzor obsiahnutý v slučke má odstránený gradient.
  • Nakoniec definujte vzorový aritmetický výpočet pomocou predtým definovaného tenzora a priraďte ho k „ B ” premenná, ako je uvedené vyššie:

Krok 5: Overte odstránenie prechodu

Posledným krokom je overenie toho, čo sa práve urobilo. Gradient od tenzora “ A “ bol odstránený a je potrebné ho skontrolovať vo výstupe pomocou „ tlačiť () “ metóda:

print('Výpočet gradientu s torch.no_grad: ', A.grad)
print('\nPôvodný tenzor: ', A)
print('\nUkážka aritmetického výpočtu: ', B)

Vyššie uvedený kód funguje nasledovne:

  • ' grad “metóda nám dáva gradient tenzora” A “. Vo výstupe nižšie sa nezobrazuje žiadny, pretože gradient bol odstránený pomocou „ pochodeň.no_grad “.
  • Pôvodný tenzor stále ukazuje, že má svoj gradient, ako je vidieť z „ vyžaduje_grad=Pravda “ vo výstupe.
  • Nakoniec, vzorový aritmetický výpočet ukazuje výsledok rovnice definovanej vyššie:

Poznámka : K nášmu zápisníku Colab môžete pristupovať tu odkaz .

Pro-Tip

' pochodeň.no_grad ” metóda je ideálna tam, kde nie sú potrebné prechody alebo keď je potrebné znížiť zaťaženie hardvéru. Ďalšie využitie tejto metódy je pri inferencii, pretože model sa používa iba na vytváranie predpovedí na základe nových údajov. Keďže nejde o žiadne školenie, má zmysel jednoducho zakázať výpočet gradientov.

Úspech! Ukázali sme vám, ako použiť metódu „torch.no_grad“ na zakázanie prechodov v PyTorch.

Záver

Použi ' pochodeň.no_grad ” metóda v PyTorch jej definovaním vo vnútri “ s ” a všetky tenzory v nej obsiahnuté budú mať odstránený gradient. To prinesie zlepšenie rýchlosti spracovania a zabráni hromadeniu gradientov v rámci tréningovej slučky. V tomto blogu sme vám ukázali, ako to „ pochodeň.no_grad ” metóda môže byť použitá na zakázanie gradientov vybraných tenzorov v PyTorch.