Görüntü sınıflandırıcı eğitim döngüsü
Görüntü sınıflandırıcıyı eğitme zamanı! Daha önce tanımladığın Net modelini kullanacak ve yedi bulut türünü ayırt etmeyi öğreteceksin.
Kayıp ve eniyileyiciyi (optimizer) tanımlamak için torch.nn ve torch.optim içindeki fonksiyonları kullanacaksın; bunlar senin için sırasıyla nn ve optim olarak içe aktarılmış durumda. Eğitim döngüsünün kendisinde bir şey değiştirmen gerekmiyor: daha önce yazdıklarının aynısı, yalnızca eğitim sırasında kaybı yazdırmak için ek birkaç mantık var.
Bu egzersiz
PyTorch ile Orta Düzey Deep Learning
kursunun bir parçasıdırEgzersiz talimatları
num_classesdeğerini7yaparakNetsınıfını kullanıp modeli tanımla venetdeğişkenine ata.- Kayıp fonksiyonunu çapraz entropi kaybı (cross-entropy loss) olarak tanımla ve
criteriondeğişkenine ata. - En iyi duruma getiriciyi (optimizer) Adam olarak tanımla, modele ait parametreleri ve
0.001öğrenme oranını geçir, veoptimizerdeğişkenine ata. - Eğitim for döngüsünü
dataloader_trainiçindeki eğitimimagesvelabelsüzerinde yineleyerek başlat.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
# Define the model
____ = ____
# Define the loss function
____ = ____
# Define the optimizer
____ = ____
for epoch in range(3):
running_loss = 0.0
# Iterate over training batches
____
optimizer.zero_grad()
outputs = net(images)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
running_loss += loss.item()
epoch_loss = running_loss / len(dataloader_train)
print(f"Epoch {epoch+1}, Loss: {epoch_loss:.4f}")