CodeBlanks Logo Icon CodeBlanks

Özet - Eğitim döngüsü

Bu grupta epoch, loss, backward ve optimizer'ı öğrendin.

Özet: eğitim döngüsü

Bu grupta:

  • Beş adım: zero_grad → ileri → kayıp → backward → step.
  • TensorDataset + DataLoader (batch_size, shuffle); epoch = verinin tam turu.
  • model.train()/model.eval() katman davranışı, torch.no_grad() gradyan izlemesi içindir.
  • Kayıplar: MSE, CrossEntropy (ham logit), BCEWithLogits; reduction.
  • Gradyan kırpma, biriktirme; SGD kuralı ve öğrenme oranı zamanlayıcıları.

Uygulama Eğit ve doğrula

İlk 150 örnek eğitim, son 50 doğrulama olsun. batch_size=32, shuffle=True ile 40 epoch eğit; her epoch sonunda model.eval() ve torch.no_grad() içinde doğrulama doğruluğunu hesaplayıp listede topla, sonra model.train()'e dön. Son doğruluğun 0.9'dan büyük olduğunu ve listede 40 değer bulunduğunu aynı satırda yazdır.

Başlangıç kodu

model.py
import torch
from torch import nn
from torch.utils.data import TensorDataset, DataLoader

torch.manual_seed(0)
X = torch.randn(200, 2)
y = (X[:, 0] + X[:, 1] > 0).long()
model = nn.Sequential(nn.Linear(2, 16), nn.ReLU(), nn.Linear(16, 2))
kayip_fn = nn.CrossEntropyLoss()
opt = torch.optim.SGD(model.parameters(), lr=0.1)

# buraya yaz

Örnek çözüm

model.py
import torch
from torch import nn
from torch.utils.data import TensorDataset, DataLoader

torch.manual_seed(0)
X = torch.randn(200, 2)
y = (X[:, 0] + X[:, 1] > 0).long()
model = nn.Sequential(nn.Linear(2, 16), nn.ReLU(), nn.Linear(16, 2))
kayip_fn = nn.CrossEntropyLoss()
opt = torch.optim.SGD(model.parameters(), lr=0.1)

yukleyici = DataLoader(TensorDataset(X[:150], y[:150]), batch_size=32, shuffle=True)
dogruluk = []
for epoch in range(40):
    for xb, yb in yukleyici:
        opt.zero_grad()
        kayip_fn(model(xb), yb).backward()
        opt.step()
    model.eval()
    with torch.no_grad():
        dogruluk.append((model(X[150:]).argmax(dim=1) == y[150:]).float().mean().item())
    model.train()
print(dogruluk[-1] > 0.9, len(dogruluk) == 40)

Beklenen çıktı

True True

Soru ve cevaplar

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

1 Doğrulama doğruluğu hesaplanırken hangisi gereklidir?

  • model.eval() ve torch.no_grad() Doğru cevap
  • opt.step()
  • kayip.backward()
  • shuffle=True

Açıklama: Değerlendirmede parametre güncellenmez; katmanlar test davranışında olmalıdır.

2 Modeli eğitim moduna geri al.

Soru
model.____()
Cevap
model.train()

Açıklama: train() dropout ve BatchNorm'u eğitim davranışına döndürür.

3 Araçları eşleştir.

Kavram Anlamı
DataLoader Toplu veri üretir
CrossEntropyLoss Sınıflandırma kaybı
clip_grad_norm_ Gradyan sınırlama
lr_scheduler Oran planlama

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