Jak používat „torch.no_grad“ v PyTorch?

Jak Pouzivat Torch No Grad V Pytorch



Výpočet gradientů pro vrstvy neuronové sítě je vestavěnou funkcí rámce PyTorch. Uživatelé mohou změřit spojení mezi sousedními vrstvami, když se gradienty počítají ve zpětném průchodu. To si však vybírá daň na hardwaru kvůli velkému objemu dat, která je třeba zpracovat, a v tomto případě „ pochodeň.no_grad ” metodu lze použít k zastavení výpočtu gradientu, kdykoli je to potřeba.

V tomto blogu budeme diskutovat o tom, jak používat „ pochodeň.no_grad “ metoda v PyTorch.

Co je metoda „torch.no_grad“ v PyTorch?

' pochodeň.no_grad ” metoda se používá pro správu kontextu ve vývojovém rámci PyTorch. Jeho účelem je zastavit výpočet gradientů pro spojení mezi následujícími vrstvami modelu hlubokého učení. Užitečnost této metody je v případě, že přechody nejsou vyžadovány v konkrétním modelu, pak je lze zakázat, aby bylo možné alokovat více hardwarových zdrojů pro zpracování trénovací smyčky modelu.







Jak používat metodu „torch.no_grad“ v PyTorch?

Přechody se počítají v rámci zpětného průchodu v PyTorch. Ve výchozím nastavení má PyTorch aktivovanou automatickou diferenciaci pro všechny modely strojového učení. Deaktivace výpočtu gradientu je nezbytná pro vývojáře, kteří nemají dostatečné zdroje hardwarového zpracování.



Postupujte podle níže uvedených kroků a zjistěte, jak používat „ pochodeň.no_grad ” metoda pro zakázání výpočtu přechodů v PyTorch:







Krok 1: Spusťte vývojové prostředí Colab

Google Colaboratory je vynikající volbou platformy pro vývoj projektů využívajících framework PyTorch díky svým vyhrazeným GPU. Jděte do Colabu webová stránka a otevřete ' Nový notebook ' jak je znázorněno:



Krok 2: Nainstalujte a importujte knihovnu pochodně

Všechny funkce PyTorch jsou zapouzdřeny „ pochodeň “knihovna. Jeho instalace a import jsou nezbytné před zahájením prací. ' !pip “ instalační balíček Pythonu se používá k instalaci knihoven a importuje se do projektu pomocí „ import 'příkaz:

!pip nainstalovat pochodeň
dovozní pochodeň

Krok 3: Definujte PyTorch Tensor s gradientem

Přidejte do projektu tenzor PyTorch pomocí „ pochodeň.tensor() “ metoda. Poté mu dejte platný gradient pomocí „ vyžaduje_grad=Pravda ” metoda, jak je uvedeno v kódu níže:

A = pochodeň.tensor([5.0], vyžaduje_grad=True)

Krok 4: Pomocí metody „torch.no_grad“ odstraňte přechod

Dále odstraňte gradient z dříve definovaného tenzoru pomocí „ pochodeň.no_grad “ metoda:

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

Výše uvedený kód funguje následovně:

  • ' no_grad() “ metoda se používá uvnitř “ s “smyčka.
  • Každý tenzor obsažený ve smyčce má odstraněný gradient.
  • Nakonec definujte vzorový aritmetický výpočet pomocí dříve definovaného tenzoru a přiřaďte jej k „ B ” proměnná, jak je uvedeno výše:

Krok 5: Ověřte odstranění přechodu

Posledním krokem je ověřit, co bylo právě provedeno. Gradient od tenzoru “ A “ byl odstraněn a je třeba jej zkontrolovat ve výstupu pomocí „ tisk() “ metoda:

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

Výše uvedený kód funguje následovně:

  • ' grad 'metoda nám dává gradient tenzoru' A “. Ve výstupu níže nezobrazuje žádný, protože přechod byl odstraněn pomocí „ pochodeň.no_grad “ metoda.
  • Původní tenzor stále ukazuje, že má svůj gradient, jak je vidět z „ vyžaduje_grad=Pravda “ ve výstupu.
  • Nakonec ukázkový aritmetický výpočet ukazuje výsledek rovnice definované dříve:

Poznámka : K našemu zápisníku Colab máte přístup zde odkaz .

Profesionální tip

' pochodeň.no_grad ” metoda je ideální tam, kde nejsou potřeba přechody nebo když je potřeba snížit výpočetní zátěž hardwaru. Další použití této metody je během inference, protože model se používá pouze pro předpovědi založené na nových datech. Vzhledem k tomu, že se nejedná o žádné školení, je zcela smysluplné jednoduše zakázat výpočet gradientů.

Úspěch! Ukázali jsme vám, jak použít metodu „torch.no_grad“ k deaktivaci přechodů v PyTorch.

Závěr

Použijte „ pochodeň.no_grad ” metodu v PyTorch tím, že ji definujete uvnitř “ s ” smyčka a všechny tenzory v ní obsažené budou mít gradient odstraněn. To přinese zlepšení rychlosti zpracování a zabrání akumulaci gradientů v rámci trénovací smyčky. V tomto blogu jsme předvedli, jak to „ pochodeň.no_grad ” metodu lze použít k deaktivaci gradientů vybraných tenzorů v PyTorch.