CodeBlanks Logo Icon CodeBlanks

Özet - Autograd

Bu grupta autograd, requires_grad ve backward() öğrendin.

Özet: autograd

Bu grupta:

  • requires_grad=True tensö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() ve detach() izlemeyi keser.
  • Hesap grafiği dinamik olarak kurulur; grad_fn düğü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

model.py
import torch

w = torch.tensor(0.0, requires_grad=True)

# buraya yaz

Örnek çözüm

model.py
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.

Soru
with torch.no_grad():
    w ____ 0.1 * w.grad
Cevap
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

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