CodeBlanks Logo Icon CodeBlanks

backward()

backward() metodu, kayıptan gradyanları hesaplar.

backward()

backward() skaler bir sonuçtan (genellikle kayıp) başlayıp grafiği geriye doğru gezer ve her yaprak tensörün .grad özniteliğini doldurur. Vektör sonuçta önce bir skalere indirgemek gerekir:

x = torch.tensor([1.0, 2.0, 3.0], requires_grad=True)
y = (x ** 2).sum()      # skaler
y.backward()
print(x.grad.tolist())  # [2.0, 4.0, 6.0]
# (x ** 2).backward()   hata: skaler olmayan çıktı

Eğitimde kayıp zaten toplu verinin ortalamasıdır, yani skalerdir.

Grafik bir kez kullanılır

Varsayılan olarak backward() grafiği belleği boşaltmak için siler; aynı grafikte ikinci kez çağırmak hata verir. Her eğitim adımında ileri yayılım yeniden yapıldığı için bu sorun olmaz:

y = (x ** 2).sum()
y.backward()
# y.backward()    RuntimeError: grafik serbest bırakıldı
y = (x ** 2).sum()   # yeni ileri yayılım, yeni grafik
y.backward()

Grafiği korumak gerekirse backward(retain_graph=True) kullanılır; bu nadiren gerekir.

Uygulama Ortalamanın gradyanı

x = torch.tensor([2.0, 4.0, 6.0, 8.0], requires_grad=True) için y = (x ** 2).mean() hesapla ve geri yay. y.item() değerini, ardından x.grad.tolist() değerini yazdır (türev: 2x/4).

Başlangıç kodu

model.py
import torch

# buraya yaz

Örnek çözüm

model.py
import torch

x = torch.tensor([2.0, 4.0, 6.0, 8.0], requires_grad=True)
y = (x ** 2).mean()
y.backward()
print(y.item())
print(x.grad.tolist())

Beklenen çıktı

30.0
[1.0, 2.0, 3.0, 4.0]

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 <code>y = x.mean()</code> (x 4 elemanlı) için her elemanın gradyanı kaçtır?

  • 0
  • 0.25 Doğru cevap
  • 1
  • 4

Açıklama: Ortalama = Σx/4; her eleman sonuca 1/4 katsayıyla girer.

2 Vektör sonucu skalere indir.

Soru
y = (x ** 2).____()
y.backward()
Cevap
y = (x ** 2).sum()
y.backward()

Açıklama: backward skaler bir çıktı ister.

3 Durumları eşleştir.

Kavram Anlamı
skaler kayıp backward çalışır
vektör çıktı Önce sum/mean
ikinci backward Grafik silinmiş
retain_graph=True Grafiği korur

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