Paano Gamitin ang 'torch.no_grad' sa PyTorch?

Paano Gamitin Ang Torch No Grad Sa Pytorch



Ang pag-compute ng mga gradient para sa mga layer ng isang neural network ay isang built-in na feature ng PyTorch framework. Maaaring masukat ng mga user ang koneksyon sa pagitan ng mga katabing layer kapag kinakalkula ang mga gradient sa backward pass. Gayunpaman, nagdudulot ito ng pinsala sa hardware dahil sa malalaking volume ng data na kailangang iproseso at, sa kasong ito, ang ' torch.no_grad ” na paraan ay maaaring gamitin upang ihinto ang pagkalkula ng gradient kung saan kinakailangan.

Sa blog na ito, tatalakayin natin kung paano gamitin ang ' torch.no_grad ” paraan sa PyTorch.

Ano ang Paraang 'torch.no_grad' sa PyTorch?

Ang ' torch.no_grad ” paraan ay ginagamit para sa pamamahala ng konteksto sa loob ng PyTorch developmental framework. Ang layunin nito ay ihinto ang pagkalkula ng mga gradient para sa koneksyon sa pagitan ng mga kasunod na layer ng deep learning model. Ang pagiging kapaki-pakinabang ng pamamaraang ito ay kapag ang mga gradient ay hindi kinakailangan sa isang partikular na modelo, maaari silang hindi paganahin upang maglaan ng higit pang mga mapagkukunan ng hardware para sa pagproseso ng loop ng pagsasanay ng modelo.







Paano Gamitin ang Paraang 'torch.no_grad' sa PyTorch?

Ang mga gradient ay kinakalkula sa loob ng backward pass sa PyTorch. Bilang default, ang PyTorch ay may awtomatikong differentiation na naka-activate para sa lahat ng mga modelo ng machine learning. Ang pag-deactivate ng gradient computation ay mahalaga para sa mga developer na walang sapat na mapagkukunan sa pagproseso ng hardware.



Sundin ang mga hakbang sa ibaba upang matutunan kung paano gamitin ang ' torch.no_grad ” paraan upang huwag paganahin ang pagkalkula ng mga gradient sa PyTorch:







Hakbang 1: Ilunsad ang Colab IDE

Ang Google Colaboratory ay isang mahusay na pagpipilian ng platform para sa pagbuo ng mga proyekto gamit ang PyTorch framework dahil sa mga nakalaang GPU nito. Pumunta sa Colab website at buksan ang isang ' Bagong Notebook ” gaya ng ipinapakita:



Hakbang 2: I-install at I-import ang Torch Library

Ang lahat ng pag-andar ng PyTorch ay naka-encapsulated ng ' tanglaw ” aklatan. Ang pag-install at pag-import nito ay mahalaga bago simulan ang trabaho. Ang ' !pip 'Ang pakete ng pag-install ng Python ay ginagamit upang mag-install ng mga aklatan at ito ay na-import sa proyekto gamit ang ' angkat ” utos:

!pip install torch
import na tanglaw

Hakbang 3: Tukuyin ang isang PyTorch Tensor na may Gradient

Magdagdag ng PyTorch tensor sa proyekto gamit ang “ torch.tensor() ” paraan. Pagkatapos, bigyan ito ng wastong gradient gamit ang ' nangangailangan_grad=Totoo ” paraan tulad ng ipinapakita sa code sa ibaba:

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

Hakbang 4: Gamitin ang Paraang 'torch.no_grad' para Alisin ang Gradient

Susunod, alisin ang gradient mula sa dating tinukoy na tensor gamit ang ' torch.no_grad 'paraan:

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

Ang code sa itaas ay gumagana tulad ng sumusunod:

  • Ang ' no_grad() Ginagamit ang 'paraan sa loob ng isang' kasama ” loop.
  • Ang bawat tensor na nasa loob ng loop ay inalis ang gradient nito.
  • Panghuli, tukuyin ang isang sample na pagkalkula ng arithmetic gamit ang dating tinukoy na tensor at italaga ito sa ' B ” variable tulad ng ipinapakita sa itaas:

Hakbang 5: I-verify ang Gradient Removal

Ang huling hakbang ay i-verify kung ano ang katatapos lang. Ang gradient mula sa tensor ' A ' ay inalis at dapat itong suriin sa output gamit ang ' print() 'paraan:

print('Gradient Computation na may torch.no_grad: ', A.grad)
print('\nOrihinal na Tensor: ', A)
print('\nSample Arithmetic Calculation: ', B)

Ang code sa itaas ay gumagana tulad ng sumusunod:

  • Ang ' grad Binibigyan tayo ng 'paraan ng gradient ng tensor' A ”. Wala itong ipinapakita sa output sa ibaba dahil ang gradient ay inalis gamit ang ' torch.no_grad ” paraan.
  • Ang orihinal na tensor ay nagpapakita pa rin na mayroon itong gradient na nakikita mula sa ' nangangailangan_grad=Totoo ” pahayag sa output.
  • Panghuli, ipinapakita ng sample na pagkalkula ng arithmetic ang resulta ng equation na tinukoy dati:

Tandaan : Maa-access mo ang aming Colab Notebook dito link .

Pro-Tip

Ang ' torch.no_grad ” Ang pamamaraan ay mainam kung saan ang mga gradient ay hindi kailangan o kapag may pangangailangan na bawasan ang pag-load ng pagproseso sa hardware. Ang isa pang paggamit ng paraang ito ay sa panahon ng hinuha dahil ang modelo ay ginagamit lamang para sa paggawa ng mga hula batay sa bagong data. Dahil walang pagsasanay na kasangkot, ganap na makatuwiran na i-disable lang ang pagkalkula ng mga gradient.

Tagumpay! Ipinakita namin sa iyo kung paano gamitin ang 'torch.no_grad' na paraan upang hindi paganahin ang mga gradient sa PyTorch.

Konklusyon

Gamitin ang ' torch.no_grad 'paraan sa PyTorch sa pamamagitan ng pagtukoy nito sa loob ng isang ' kasama ” loop at lahat ng tensor na nakapaloob sa loob ay aalisin ang kanilang gradient. Magdadala ito ng mga pagpapabuti sa bilis ng pagproseso at maiwasan ang akumulasyon ng mga gradient sa loob ng loop ng pagsasanay. Sa blog na ito, ipinakita namin kung paano ito ' torch.no_grad ” na paraan ay maaaring gamitin upang hindi paganahin ang mga gradient ng mga napiling tensor sa PyTorch.