Kako koristiti “torch.no_grad” u PyTorchu?

Kako Koristiti Torch No Grad U Pytorchu



Izračunavanje gradijenata za slojeve neuronske mreže ugrađena je značajka okvira PyTorch. Korisnici mogu procijeniti vezu između susjednih slojeva kada se gradijenti izračunavaju u prolazu unatrag. Međutim, to opterećuje hardver zbog velike količine podataka koji se moraju obraditi i, u ovom slučaju, ' baklja.no_grad ” metoda se može koristiti za zaustavljanje izračuna gradijenta gdje god je potrebno.

U ovom blogu raspravljat ćemo o tome kako koristiti ' baklja.no_grad ” metoda u PyTorchu.

Što je metoda “torch.no_grad” u PyTorchu?

' baklja.no_grad ” metoda se koristi za upravljanje kontekstom unutar PyTorch razvojnog okvira. Njegova je svrha zaustaviti izračun gradijenata za vezu između sljedećih slojeva modela dubokog učenja. Korisnost ove metode je kada gradijenti nisu potrebni u određenom modelu, tada se oni mogu onemogućiti kako bi se dodijelilo više hardverskih resursa za obradu petlje obuke modela.







Kako koristiti metodu “torch.no_grad” u PyTorchu?

Gradijenti se izračunavaju unutar prolaza unatrag u PyTorchu. Prema zadanim postavkama, PyTorch ima aktiviranu automatsku diferencijaciju za sve modele strojnog učenja. Deaktivacija gradijentnog izračuna je ključna za programere koji nemaju dovoljno hardverskih resursa za obradu.



Slijedite korake u nastavku kako biste naučili kako koristiti ' baklja.no_grad ” za onemogućavanje izračuna gradijenata u PyTorchu:







Korak 1: Pokrenite Colab IDE

Google Colaboratory izvrstan je izbor platforme za razvoj projekata koji koriste okvir PyTorch zbog svojih namjenskih GPU-ova. Idite u Colab web stranica i otvorite ' Nova bilježnica ' kao što je prikazano:



Korak 2: Instalirajte i uvezite Torch Library

Sve funkcije PyTorcha sadržane su u ' baklja ” knjižnica. Njegova instalacija i uvoz neophodni su prije početka rada. ' !pip ” instalacijski paket Pythona koristi se za instaliranje biblioteka i uvozi se u projekt pomoću “ uvoz ” naredba:

!pip instalirajte gorionik
uvozna baklja

Korak 3: Definirajte PyTorch tenzor s gradijentom

Dodajte PyTorch tenzor projektu koristeći ' baklja.tenzor() ” metoda. Zatim mu dajte važeći gradijent koristeći ' requires_grad=Istina ” kao što je prikazano u donjem kodu:

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

Korak 4: Koristite metodu “torch.no_grad” za uklanjanje gradijenta

Zatim uklonite gradijent iz prethodno definiranog tenzora pomoću ' baklja.no_grad ” metoda:

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

Gornji kôd radi na sljedeći način:

  • ' no_grad() ' metoda se koristi unutar ' s ' petlja.
  • Svaki tenzor sadržan unutar petlje ima svoj gradijent uklonjen.
  • Na kraju, definirajte ogledni aritmetički izračun pomoću prethodno definiranog tenzora i dodijelite ga ' B ” varijabla kao što je gore prikazano:

Korak 5: Provjerite uklanjanje gradijenta

Zadnji korak je provjera onoga što je upravo učinjeno. Gradijent iz tenzora “ A ' je uklonjen i mora se provjeriti u izlazu pomoću ' ispis() ” metoda:

print('Proračun gradijenta s torch.no_grad: ', A.grad)
print('\nOriginalni tenzor: ', A)
print('\nUzorak aritmetičkog izračuna: ', B)

Gornji kôd radi na sljedeći način:

  • ' dipl 'metoda nam daje gradijent tenzora' A ”. Ne prikazuje ništa u ispisu ispod jer je gradijent uklonjen pomoću ' baklja.no_grad ” metoda.
  • Izvorni tenzor još uvijek pokazuje da ima svoj gradijent kao što se vidi iz ' requires_grad=Istina ” izjava u izlazu.
  • Na kraju, ogledni aritmetički izračun pokazuje rezultat prethodno definirane jednadžbe:

Bilješka : Našoj Colab bilježnici možete pristupiti ovdje veza .

Stručni savjet

' baklja.no_grad ” metoda je idealna tamo gdje gradijenti nisu potrebni ili kada postoji potreba za smanjenjem opterećenja obrade na hardveru. Još jedna upotreba ove metode je tijekom zaključivanja jer se model koristi samo za izradu predviđanja na temelju novih podataka. Budući da nema uključene obuke, potpuno je logično jednostavno onemogućiti izračun gradijenata.

Uspjeh! Pokazali smo vam kako koristiti metodu “torch.no_grad” za onemogućavanje gradijenata u PyTorchu.

Zaključak

Koristiti ' baklja.no_grad ” u PyTorchu definiranjem unutar “ s ” i svim tenzorima koji se nalaze u njoj bit će uklonjen njihov gradijent. To će donijeti poboljšanja u brzinama obrade i spriječiti nakupljanje gradijenata unutar petlje vježbanja. U ovom blogu prikazali smo kako ovo ' baklja.no_grad ” metoda se može koristiti za onemogućavanje gradijenata odabranih tenzora u PyTorchu.