PyTorch'ta “torch.no_grad” Nasıl Kullanılır?

Pytorch Ta Torch No Grad Nasil Kullanilir



Bir sinir ağının katmanları için gradyanların hesaplanması, PyTorch çerçevesinin yerleşik bir özelliğidir. Kullanıcılar, geriye doğru geçişte degradeler hesaplanırken bitişik katmanlar arasındaki bağlantıyı ölçebilir. Ancak işlenmesi gereken büyük miktarda veri nedeniyle bu durum donanıma zarar verir ve bu durumda ' meşale.no_grad ” yöntemi ihtiyaç duyulan yerde gradyan hesaplamasını durdurmak için kullanılabilir.

Bu blogda “” ifadesinin nasıl kullanılacağını tartışacağız. meşale.no_grad PyTorch'ta ” yöntemi.

PyTorch'ta “torch.no_grad” Yöntemi nedir?

meşale.no_grad PyTorch geliştirme çerçevesi içerisinde bağlamın yönetimi için ” yöntemi kullanılmaktadır. Amacı, derin öğrenme modelinin sonraki katmanları arasındaki bağlantı için gradyanların hesaplanmasını durdurmaktır. Bu yöntemin kullanışlılığı, belirli bir modelde degradelere ihtiyaç duyulmadığında, modelin eğitim döngüsünün işlenmesi için daha fazla donanım kaynağı tahsis etmek üzere devre dışı bırakılabilmesidir.







PyTorch'ta “torch.no_grad” Yöntemi Nasıl Kullanılır?

Degradeler PyTorch'ta geriye doğru geçişte hesaplanır. Varsayılan olarak PyTorch, tüm makine öğrenimi modelleri için otomatik farklılaştırmayı etkinleştirmiştir. Dereceli hesaplamanın devre dışı bırakılması, yeterli donanım işleme kaynağına sahip olmayan geliştiriciler için çok önemlidir.



“” seçeneğinin nasıl kullanılacağını öğrenmek için aşağıdaki adımları izleyin. meşale.no_grad ” PyTorch'ta degradelerin hesaplanmasını devre dışı bırakma yöntemi:







1. Adım: Colab IDE'yi başlatın

Google Colaboratory, özel GPU'ları nedeniyle PyTorch çerçevesini kullanan projelerin geliştirilmesi için mükemmel bir platform seçimidir. Colab'a git İnternet sitesi ve bir “ Yeni Defter ' gosterildigi gibi:



Adım 2: Torch Kitaplığını Kurun ve İçe Aktarın

PyTorch'un tüm işlevleri ' meşale ' kütüphane. Çalışmaya başlamadan önce kurulumu ve ithalatı önemlidir. “ !pip “Python'un kurulum paketi kütüphaneleri kurmak için kullanılır ve” kullanılarak projeye aktarılır. içe aktarmak ' emretmek:

!pip kurulum meşalesi
ithalat meşale

Adım 3: Gradyanlı bir PyTorch Tensörü Tanımlayın

“” komutunu kullanarak projeye bir PyTorch tensörü ekleyin. meşale.tensor() ' yöntem. Daha sonra “” seçeneğini kullanarak ona geçerli bir degrade verin. gerektirir_grad=Doğru ” yöntemi aşağıdaki kodda gösterildiği gibidir:

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

Adım 4: Degradeyi Kaldırmak için “torch.no_grad” Yöntemini Kullanın

Daha sonra, '' seçeneğini kullanarak önceden tanımlanan tensördeki degradeyi kaldırın. meşale.no_grad ' yöntem:

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

Yukarıdaki kod şu şekilde çalışır:

  • no_grad() ' yöntemi bir ' içinde kullanılır ile ' döngü.
  • Döngünün içerdiği her tensörün gradyanı kaldırılmıştır.
  • Son olarak, önceden tanımlanmış tensörü kullanarak örnek bir aritmetik hesaplama tanımlayın ve bunu “ B ” değişkeni yukarıda gösterildiği gibi:

Adım 5: Degrade Kaldırmayı Doğrulayın

Son adım, ne yapıldığını doğrulamaktır. Tensörden gelen gradyan “ A ” kaldırıldı ve çıktıda “ ile kontrol edilmesi gerekiyor. Yazdır() ' yöntem:

print('torch.no_grad ile Gradyan Hesaplaması: ', A.grad)
print('\nOrijinal Tensör: ', A)
print('\nÖrnek Aritmetik Hesaplama: ', B)

Yukarıdaki kod şu şekilde çalışır:

  • mezun “yöntemi bize tensörün gradyanını verir” A ”. Aşağıdaki çıktıda hiçbiri gösterilmiyor çünkü degrade “ meşale.no_grad ' yöntem.
  • Orijinal tensör hala 'den görüldüğü gibi gradyanına sahip olduğunu gösteriyor' gerektirir_grad=Doğru Çıktıda 'ifadesi var.
  • Son olarak örnek aritmetik hesaplama, daha önce tanımlanan denklemin sonucunu gösterir:

Not : Colab Notebook'umuza buradan ulaşabilirsiniz. bağlantı .

Profesyonel İpucu

meşale.no_grad ” yöntemi, degradelerin gerekli olmadığı veya donanım üzerindeki işlem yükünün azaltılmasına ihtiyaç duyulduğu durumlarda idealdir. Bu yöntemin bir başka kullanımı da çıkarım sırasındadır çünkü model yalnızca yeni verilere dayalı tahminler yapmak için kullanılır. Herhangi bir eğitim söz konusu olmadığından, gradyanların hesaplanmasını devre dışı bırakmak tamamen mantıklıdır.

Başarı! PyTorch'ta degradeleri devre dışı bırakmak için “torch.no_grad” yöntemini nasıl kullanacağınızı gösterdik.

Çözüm

Kullan ' meşale.no_grad PyTorch'ta ' yöntemini bir ' içinde tanımlayarak ile ” döngüsü ve içindeki tüm tensörlerin gradyanları kaldırılacaktır. Bu, işlem hızlarında iyileştirmeler sağlayacak ve eğitim döngüsü içinde gradyanların birikmesini önleyecektir. Bu blogda bunun nasıl olduğunu gösterdik ' meşale.no_grad PyTorch'ta seçilen tensörlerin gradyanlarını devre dışı bırakmak için 'yöntemi kullanılabilir.