Özet - Autograd
- Makine Öğrenmesi kursu
- İleri seviye
- Ders 24/78
- 6 dk
Bu grupta autograd, requires_grad ve backward() öğrendin.
Özet: autograd
Bu grupta:
requires_grad=Truetensörler izlenir; türetilen tensörler de izlenir.backward()skaler bir sonuçtan gradyanları hesaplar, yaprakların.grad'ını doldurur.- Gradyanlar birikir; her adımda sıfırlanmalıdır.
no_grad()vedetach()izlemeyi keser.- Hesap grafiği dinamik olarak kurulur;
grad_fndüğümleri gösterir, zincir kuralı geriye uygulanır.
Uygulama Elle gradyan inişi
kayip = (w - 3) ** 2 fonksiyonunu w = 0'dan başlayarak öğrenme oranı 0.1 ile 50 adım gradyan inişiyle küçült: her adımda kayıp hesapla, backward(), torch.no_grad() içinde güncelle ve gradyanı sıfırla. Son w değerini round(..., 3) ile yazdır.
Başlangıç kodu
import torch
w = torch.tensor(0.0, requires_grad=True)
# buraya yazÖrnek çözüm
import torch
w = torch.tensor(0.0, requires_grad=True)
for _ in range(50):
kayip = (w - 3) ** 2
kayip.backward()
with torch.no_grad():
w -= 0.1 * w.grad
w.grad.zero_()
print(round(w.item(), 3))Beklenen çıktı
3.0
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Autograd ile gradyan inişinde güncelleme neden <code>torch.no_grad()</code> içinde yapılır?
- Zorunlu değildir
- Gradyanı sıfırlamak için
- Güncellemenin kendisi grafiğe kaydedilmesin diye Doğru cevap
- Daha doğru olduğu için
Açıklama: w -= lr·grad bir parametre ayarıdır, türevi alınacak bir hesap değildir.
2 Güncellemeyi izlemeden yap.
with torch.no_grad():
w ____ 0.1 * w.grad
with torch.no_grad():
w -= 0.1 * w.grad
Açıklama: Gradyanın tersi yönünde adım atılır.
3 Araçları eşleştir.
| Kavram | Anlamı |
|---|---|
backward() |
Gradyan hesabı |
.grad |
Gradyan değeri |
zero_() |
Sıfırlama |
no_grad() |
İzlemesiz blok |