backward()
- Makine Öğrenmesi kursu
- İleri seviye
- Ders 21/78
- 5 dk
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
import torch
# buraya yazÖrnek çözüm
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.
y = (x ** 2).____()
y.backward()
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 |