Tässä blogissa keskustelemme ' torch.no_grad ”-menetelmä PyTorchissa.
Mikä on 'torch.no_grad' -menetelmä PyTorchissa?
' torch.no_grad ” -menetelmää käytetään kontekstin hallintaan PyTorchin kehityskehyksen sisällä. Sen tarkoituksena on pysäyttää gradienttien laskenta syväoppimismallin seuraavien kerrosten välistä yhteyttä varten. Tämän menetelmän hyödyllisyys on siinä, että kun gradientteja ei vaadita tietyssä mallissa, ne voidaan poistaa käytöstä, jotta voidaan varata enemmän laitteistoresursseja mallin opetussilmukan käsittelyyn.
Kuinka käyttää 'torch.no_grad' -menetelmää PyTorchissa?
Gradientit lasketaan PyTorchissa taaksepäin ajettaessa. PyTorchin automaattinen erottelu on oletusarvoisesti käytössä kaikissa koneoppimismalleissa. Gradienttilaskennan deaktivointi on välttämätöntä kehittäjille, joilla ei ole riittävästi laitteiston käsittelyresursseja.
Seuraa alla olevia ohjeita oppiaksesi käyttämään ' torch.no_grad ” -menetelmä, jolla voit poistaa gradienttien laskemisen käytöstä PyTorchissa:
Vaihe 1: Käynnistä Colab IDE
Google Colaboratory on omistettujen grafiikkasuorittimiensa ansiosta erinomainen alustavalinta PyTorch-kehystä käyttävien projektien kehittämiseen. Mene Colabiin verkkosivusto ja avaa ' Uusi muistikirja ' kuten on esitetty:
Vaihe 2: Asenna ja tuo Torch Library
Kaikki PyTorchin toiminnot on koteloitu ' taskulamppu ' kirjasto. Sen asennus ja maahantuonti ovat välttämättömiä ennen työn aloittamista. ' !pip ' Pythonin asennuspakettia käytetään kirjastojen asentamiseen ja se tuodaan projektiin ' tuonti 'komento:
!pip install taskulampputuonti taskulamppu
Vaihe 3: Määritä PyTorch-tensori gradientilla
Lisää PyTorch-tensori projektiin käyttämällä ' torch.tensor() ”menetelmä. Anna sitten kelvollinen gradientti käyttämällä ' vaatii_grad=Tosi ' -menetelmä alla olevan koodin mukaisesti:
A = taskulamppu.tensor([5.0], vaatii_grad=True)
Vaihe 4: Käytä 'torch.no_grad' -menetelmää liukuvärin poistamiseen
Poista seuraavaksi gradientti aiemmin määritetystä tensorista käyttämällä ' torch.no_grad 'menetelmä:
komennolla torch.no_grad():B = A**2 + 16
Yllä oleva koodi toimii seuraavasti:
- ' no_grad() 'menetelmää käytetään ' kanssa 'silmukka.
- Jokaisen silmukan sisältämän tensorin gradientti on poistettu.
- Lopuksi määritä esimerkkiaritmeettinen laskutoimitus käyttämällä aiemmin määritettyä tensoria ja määritä se ' B ”-muuttuja yllä olevan kuvan mukaisesti:
Vaihe 5: Tarkista gradientin poisto
Viimeinen vaihe on tarkistaa, mitä juuri tehtiin. Gradientti tensorista ' A ' poistettiin ja se on tarkistettava tulosteesta ' Tulosta() 'menetelmä:
print('Gradienttilaskenta käyttäen torch.no_grad:', A.grad)print('\nAlkuperäinen tensori: ', A)
print('\nEsimerkkiaritmeettinen laskelma: ', B)
Yllä oleva koodi toimii seuraavasti:
- ' grad 'menetelmä antaa meille tensorin gradientin' A ”. Alla olevassa tulosteessa ei näy mitään, koska liukuväri on poistettu käyttämällä ' torch.no_grad ”menetelmä.
- Alkuperäinen tensori osoittaa edelleen, että sillä on gradientti, kuten ' vaatii_grad=Tosi ”-lausunto tulosteessa.
- Lopuksi näytearitmeettinen laskelma näyttää aiemmin määritellyn yhtälön tuloksen:
Huomautus : Pääset käyttämään Colab-muistikirjaamme tästä linkki .
Pro-Tip
' torch.no_grad ” -menetelmä on ihanteellinen silloin, kun gradientteja ei tarvita tai kun on tarve vähentää laitteiston prosessointikuormaa. Toinen tämän menetelmän käyttökohde on päättelyn aikana, koska mallia käytetään vain ennusteiden tekemiseen uuden datan perusteella. Koska siihen ei liity koulutusta, on täysin järkevää yksinkertaisesti poistaa kaltevuuslaskenta käytöstä.
Menestys! Olemme näyttäneet sinulle, kuinka voit käyttää 'torch.no_grad' -menetelmää liukuvärien poistamiseen PyTorchissa.
Johtopäätös
Käytä ' torch.no_grad ' -menetelmää PyTorchissa määrittämällä se ' kanssa ” silmukan ja kaikkien sen sisältämien tensorien gradientti poistetaan. Tämä parantaa käsittelynopeuksia ja estää gradienttien kertymisen harjoitussilmukan sisällä. Tässä blogissa olemme näyttäneet, kuinka tämä ' torch.no_grad ” -menetelmää voidaan käyttää valittujen tensorien gradientin poistamiseen PyTorchissa.