grad
- Makine Öğrenmesi kursu
- İleri seviye
- Ders 22/78
- 5 dk
grad özelliği, hesaplanan gradyanları içerir.
grad özniteliği
.grad, backward() sonrası yaprak tensörlerde dolar. Önemli bir ayrıntı: gradyanlar birikir. backward() her çağrıda yeni gradyanı mevcut olanın üstüne ekler:
w = torch.tensor(1.0, requires_grad=True)
for _ in range(3):
(2 * w).backward()
print(w.grad.item()) # 6.0: 2 + 2 + 2
w.grad.zero_()
print(w.grad.item()) # 0.0Bu yüzden eğitim döngüsünde her adımda gradyanlar sıfırlanır: optimizer.zero_grad().
Yapraklar ve ara tensörler
Yalnızca kullanıcının oluşturduğu yaprak tensörlerin (is_leaf) .grad'ı tutulur. Ara sonuçların gradyanı bellek için atılır; gerekirse retain_grad() ile istenir:
x = torch.tensor(2.0, requires_grad=True)
h = x * 3 # ara tensör
h.retain_grad()
y = h ** 2
y.backward()
print(x.is_leaf, h.is_leaf) # True False
print(h.grad.item(), x.grad.item()) # 12.0 36.0Zincir kuralı: dy/dx = dy/dh · dh/dx = 2h · 3 = 36.
Uygulama Birikimi gör
w = torch.tensor(3.0, requires_grad=True) için (w ** 2).backward() çağrısını üç kez yap ve w.grad.item() değerini yazdır. Ardından gradyanı zero_() ile sıfırla, bir kez daha geri yay ve yeniden yazdır.
Başlangıç kodu
import torch
# buraya yazÖrnek çözüm
import torch
w = torch.tensor(3.0, requires_grad=True)
for _ in range(3):
(w ** 2).backward()
print(w.grad.item())
w.grad.zero_()
(w ** 2).backward()
print(w.grad.item())Beklenen çıktı
18.0 6.0
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Gradyanlar sıfırlanmadan 5 adım eğitim yapılırsa ne olur?
- Her adım önceki adımların gradyanlarının toplamıyla güncellenir Doğru cevap
- Hiçbir şey olmaz
- Hata verir
- Gradyanlar sıfır kalır
Açıklama: Birikim yanlış ve giderek büyüyen güncellemelere yol açar.
2 Gradyanı sıfırla.
w.grad.____()
w.grad.zero_()
Açıklama: zero_() gradyan tensörünü yerinde sıfırlar.
3 Kavramları eşleştir.
| Kavram | Anlamı |
|---|---|
birikim |
backward üst üste ekler |
zero_grad |
Her adımda sıfırlama |
is_leaf |
Kullanıcı tensörü |
retain_grad |
Ara gradyanı tut |