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.