CodeBlanks Logo Icon CodeBlanks

grad

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.0

Bu 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.0

Zincir 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

model.py
import torch

# buraya yaz

Örnek çözüm

model.py
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.

Soru
w.grad.____()
Cevap
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

İleri seviye bölümündeki tüm dersler