optimizer.step()
- Makine Öğrenmesi kursu
- İleri seviye
- Ders 39/78
- 5 dk
optimizer.step() gradyanlarla ağırlıkları günceller.
optimizer.step()
step(), her parametreyi gradyanına göre günceller. SGD için kural basittir: p ← p - lr · p.grad. Optimize edici parametre listesini kuruluşta alır:
opt = torch.optim.SGD(model.parameters(), lr=0.1)
w = torch.tensor([1.0], requires_grad=True)
opt2 = torch.optim.SGD([w], lr=0.1)
(3 * w).sum().backward() # grad = 3
opt2.step()
print(w.item()) # 1 - 0.1·3 = 0.7Farklı katmanlara farklı öğrenme oranları parametre grupları ile verilebilir: SGD([{"params": a, "lr": 0.01}, {"params": b}], lr=0.1).
Öğrenme oranı zamanlayıcıları
Eğitim ilerledikçe öğrenme oranını azaltmak genellikle daha iyi bir sonuç verir. torch.optim.lr_scheduler bunu otomatikleştirir; scheduler.step() her epoch sonunda çağrılır:
opt = torch.optim.SGD(model.parameters(), lr=0.1)
zam = torch.optim.lr_scheduler.StepLR(opt, step_size=10, gamma=0.5)
for epoch in range(30):
egit_bir_epoch()
zam.step() # her 10 epoch'ta lr yarıya iner
print(opt.param_groups[0]["lr"]) # 0.0125Güncel oran opt.param_groups[0]["lr"] içinde okunur.
Uygulama Adım ve zamanlayıcı
w = torch.tensor([2.0], requires_grad=True) için SGD([w], lr=0.5) kur, (w ** 2).sum() kaybını geri yay ve step() çağır; yeni w'yi item() ile yazdır. Ardından aynı optimize ediciye StepLR(opt, step_size=2, gamma=0.1) bağla, zamanlayıcıyı 4 kez ilerlet ve öğrenme oranını round(..., 4) ile yazdır.
Başlangıç kodu
import torch
w = torch.tensor([2.0], requires_grad=True)
# buraya yazÖrnek çözüm
import torch
w = torch.tensor([2.0], requires_grad=True)
opt = torch.optim.SGD([w], lr=0.5)
(w ** 2).sum().backward()
opt.step()
print(w.item())
zam = torch.optim.lr_scheduler.StepLR(opt, step_size=2, gamma=0.1)
for _ in range(4):
opt.step()
zam.step()
print(round(opt.param_groups[0]["lr"], 4))Beklenen çıktı
0.0 0.005
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 w = 2, gradyan = -4, lr = 0.5 ise SGD adımından sonra w kaçtır?
- 2
- 4 Doğru cevap
- 0
- -2
Açıklama: 2 - 0.5·(-4) = 4.
2 Güncel öğrenme oranını oku.
lr = opt.____[0]["lr"]
lr = opt.param_groups[0]["lr"]
Açıklama: param_groups her grubun ayarlarını tutar.
3 Kavramları eşleştir.
| Kavram | Anlamı |
|---|---|
step() |
p ← p - lr·grad |
lr |
Adım büyüklüğü |
StepLR |
Aralıklı azaltma |
param_groups |
Grup başına ayar |