CodeBlanks Logo Icon CodeBlanks

Optimize edici

SGD optimize edici oluşturursun.

Optimize edici adımı

Eğitim döngüsü dört adımın tekrarıdır: ileri yayılım, kayıp, geri yayılım, güncelleme (ve gradyanları sıfırlama). Elle yazılmış hâli:

lr = 0.01
for adim in range(2000):
    kayip = ((model(x) - y) ** 2).mean()
    kayip.backward()
    with torch.no_grad():
        for p in (w, b):
            p -= lr * p.grad
            p.grad.zero_()

Öğrenme oranı çok büyükse kayıp patlar, çok küçükse eğitim çok yavaş ilerler.

optim.SGD ile aynı iş

PyTorch'un optimize edicisi güncelleme ve sıfırlamayı üstlenir; döngü kısalır ve hatalara daha az açık olur:

opt = torch.optim.SGD([w, b], lr=0.01)
for adim in range(2000):
    opt.zero_grad()
    kayip = ((model(x) - y) ** 2).mean()
    kayip.backward()
    opt.step()

zero_grad, backward, step üçlüsü tüm PyTorch eğitim döngülerinin iskeletidir.

Uygulama Modeli eğit

torch.optim.SGD([w, b], lr=0.01) ile 3000 adım eğit (her adımda zero_grad, kayıp, backward, step). Öğrenilen w ve b'yi round(..., 2) ile aynı satırda, ardından son kaybın 0.001'den küçük olduğunu yazdır.

Başlangıç kodu

model.py
import torch

x = torch.arange(10, dtype=torch.float32).unsqueeze(1)
y = 3 * x + 2
w = torch.zeros(1, requires_grad=True)
b = torch.zeros(1, requires_grad=True)

def model(x):
    return x * w + b

# buraya yaz

Örnek çözüm

model.py
import torch

x = torch.arange(10, dtype=torch.float32).unsqueeze(1)
y = 3 * x + 2
w = torch.zeros(1, requires_grad=True)
b = torch.zeros(1, requires_grad=True)

def model(x):
    return x * w + b

opt = torch.optim.SGD([w, b], lr=0.01)
for _ in range(3000):
    opt.zero_grad()
    kayip = ((model(x) - y) ** 2).mean()
    kayip.backward()
    opt.step()
print(round(w.item(), 2), round(b.item(), 2))
print(kayip.item() < 0.001)

Beklenen çıktı

3.0 2.0
True

Soru ve cevaplar

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

1 Bu veride <code>lr = 0.1</code> ile ne olur?

  • Hiç değişmez
  • Aynı sonuç
  • Kayıp patlar (ıraksar) Doğru cevap
  • Daha hızlı yakınsar

Açıklama: x değerleri 9'a kadar çıktığı için gradyan büyüktür; büyük adım optimumu aşar ve her adımda hata büyür.

2 Parametreleri güncelle.

Soru
opt.____()
Cevap
opt.step()

Açıklama: step() gradyanlarla parametreleri günceller.

3 Döngü adımlarını eşleştir.

Kavram Anlamı
opt.zero_grad() Gradyanları sıfırla
model(x) İleri yayılım
kayip.backward() Geri yayılım
opt.step() Güncelleme

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