CodeBlanks Logo Icon CodeBlanks

Model tanımı

nn.Module ile model tanımlarsın.

Model tanımı

Modelimiz iki parametrelidir: eğim w ve kesişim b. İkisi de requires_grad=True ile oluşturulur ki autograd onların gradyanlarını hesaplasın. Model sıradan bir Python fonksiyonudur:

w = torch.zeros(1, requires_grad=True)
b = torch.zeros(1, requires_grad=True)

def model(x):
    return x * w + b      # (10, 1) * (1,) + (1,) -> (10, 1)

Başlangıçta parametreler sıfırdır; model her girdiye 0 tahmin eder.

Parametre listesi

Eğitilecek parametreleri bir listede toplamak, güncelleme ve gradyan sıfırlama adımlarını tek döngüyle yazmayı sağlar. nn.Module bu listeyi bizim için parameters() ile tutar:

parametreler = [w, b]
for p in parametreler:
    print(p.shape, p.requires_grad)

Modeli fonksiyonla yazmak küçük örneklerde öğreticidir; büyük modellerde katmanları ve parametreleri nn.Module yönetir.

Uygulama Modeli dene

Parametreler sıfırken model(x)'in toplamını item() ile yazdır. Ardından torch.no_grad() içinde w'ye 3, b'ye 2 ata (w.fill_(3), b.fill_(2)) ve tahminin y'ye eşit olduğunu torch.equal ile 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

print(model(x).sum().item())
with torch.no_grad():
    w.fill_(3)
    b.fill_(2)
print(torch.equal(model(x).detach(), y))

Beklenen çıktı

0.0
True

Soru ve cevaplar

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

1 Parametreler sıfırken <code>model(x)</code> neyi verir?

  • Tüm örnekler için 0 Doğru cevap
  • x'in kendisi
  • y
  • Hata

Açıklama: x · 0 + 0 = 0.

2 Modelin tahminini hesapla.

Soru
def model(x):
    return x * w ____ b
Cevap
def model(x):
    return x * w + b

Açıklama: Doğrusal model: eğim × girdi + kesişim.

3 Parçaları eşleştir.

Kavram Anlamı
w Eğim
b Kesişim
requires_grad=True Öğrenilecek
model(x) Tahmin

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