Kako uporabljati »torch.no_grad« v PyTorchu?

Kako Uporabljati Torch No Grad V Pytorchu



Izračun gradientov za plasti nevronske mreže je vgrajena funkcija ogrodja PyTorch. Uporabniki lahko izmerijo povezavo med sosednjimi plastmi, ko se gradienti izračunajo pri prehodu nazaj. Vendar to zahteva davek na strojni opremi zaradi velikih količin podatkov, ki jih je treba obdelati, in v tem primeru ' bakla.no_grad ” se lahko uporabi za zaustavitev izračuna gradienta, kjer koli je to potrebno.

V tem blogu bomo razpravljali o tem, kako uporabljati ' bakla.no_grad ” v PyTorchu.

Kaj je metoda »torch.no_grad« v PyTorchu?

' bakla.no_grad ” se uporablja za upravljanje konteksta znotraj razvojnega okvira PyTorch. Njegov namen je ustaviti izračun gradientov za povezavo med naslednjimi plastmi modela globokega učenja. Uporabnost te metode je, da ko gradienti niso potrebni v določenem modelu, jih je mogoče onemogočiti, da se dodeli več virov strojne opreme za obdelavo vadbene zanke modela.







Kako uporabljati metodo “torch.no_grad” v PyTorchu?

Gradienti se izračunajo znotraj prehoda nazaj v PyTorch. PyTorch ima privzeto aktivirano samodejno razlikovanje za vse modele strojnega učenja. Deaktivacija gradientnega računanja je nujna za razvijalce, ki nimajo dovolj sredstev za strojno obdelavo.



Sledite spodnjim korakom, da se naučite uporabljati » bakla.no_grad ” za onemogočanje izračuna gradientov v PyTorchu:







1. korak: Zaženite Colab IDE

Google Colaboratory je zaradi svojih namenskih grafičnih procesorjev odlična izbira platforme za razvoj projektov z uporabo ogrodja PyTorch. Pojdite v Colab Spletna stran in odprite ' Nov zvezek ' kot je prikazano:



2. korak: Namestite in uvozite knjižnico Torch

Vsa funkcionalnost PyTorcha je zajeta v » svetilka ' knjižnica. Njegova namestitev in uvoz sta nujna pred začetkom dela. ' !pip ” namestitveni paket Python se uporablja za namestitev knjižnic in se uvozi v projekt s pomočjo “ uvoz ” ukaz:

!pip namestite svetilko
uvozna svetilka

3. korak: Definirajte tenzor PyTorch z gradientom

Projektu dodajte tenzor PyTorch z uporabo ' torch.tensor() ” metoda. Nato mu dajte veljaven gradient z uporabo ' requires_grad=Res ”, kot je prikazano v spodnji kodi:

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

4. korak: Uporabite metodo “torch.no_grad” za odstranitev preliva

Nato odstranite gradient iz predhodno definiranega tenzorja z uporabo ' bakla.no_grad ” metoda:

z baklo.no_grad():
B = A**2 + 16

Zgornja koda deluje na naslednji način:

  • ' no_grad() ' metoda se uporablja znotraj ' z ” zanke.
  • Vsakemu tenzorju v zanki je odstranjen gradient.
  • Na koncu definirajte vzorčni aritmetični izračun z uporabo predhodno definiranega tenzorja in ga dodelite ' B ”, kot je prikazano zgoraj:

5. korak: Preverite odstranitev gradienta

Zadnji korak je preveriti, kaj je bilo pravkar narejeno. Gradient iz tenzorja ' A « je bil odstranjen in ga je treba preveriti v izhodu z uporabo » natisni() ” metoda:

print('Izračun gradienta z torch.no_grad: ', A.grad)
print('\nIzvirni tenzor: ', A)
print('\nVzorec aritmetičnega izračuna: ', B)

Zgornja koda deluje na naslednji način:

  • ' grad ' metoda nam daje gradient tenzorja ' A ”. V spodnjem izpisu ne prikaže nobenega, ker je bil gradient odstranjen z uporabo ' bakla.no_grad ” metoda.
  • Prvotni tenzor še vedno kaže, da ima svoj gradient, kot je razvidno iz ' requires_grad=Res ” v izhodu.
  • Na koncu vzorčni aritmetični izračun prikazuje rezultat prej definirane enačbe:

Opomba : Do našega zvezka Colab lahko dostopate tukaj povezava .

Pro-Tip

' bakla.no_grad ” metoda je idealna, kjer gradienti niso potrebni ali ko je treba zmanjšati obremenitev strojne opreme pri obdelavi. Druga uporaba te metode je med sklepanjem, ker se model uporablja samo za napovedovanje na podlagi novih podatkov. Ker usposabljanje ni vključeno, je popolnoma smiselno preprosto onemogočiti izračun gradientov.

uspeh! Pokazali smo vam, kako uporabiti metodo »torch.no_grad« za onemogočanje gradientov v PyTorchu.

Zaključek

Uporabi ' bakla.no_grad ' v PyTorchu tako, da jo definirate znotraj ' z ” in vsem tenzorjem v njej bo odstranjen gradient. To bo prineslo izboljšave v hitrosti obdelave in preprečilo kopičenje gradientov znotraj vadbene zanke. V tem blogu smo predstavili, kako ta ' bakla.no_grad ” lahko uporabite za onemogočanje gradientov izbranih tenzorjev v PyTorchu.