Pętla treningowa klasyfikatora obrazów
Czas wytrenować klasyfikator obrazów! Użyjesz sieci Net zdefiniowanej wcześniej i nauczysz ją rozróżniać siedem rodzajów chmur.
Do zdefiniowania funkcji straty i optymalizatora skorzystasz z funkcji z bibliotek torch.nn i torch.optim, zaimportowanych odpowiednio jako nn i optim. Nie musisz niczego zmieniać w samej pętli treningowej – wygląda dokładnie tak samo jak te, które pisałeś wcześniej, z dodatkową logiką wyświetlającą wartość straty podczas treningu.
To ćwiczenie jest częścią kursu
Głębokie uczenie z PyTorch – poziom średnio zaawansowany
Instrukcje do ćwiczenia
- Zdefiniuj model, używając klasy
Netz parametremnum_classesustawionym na7, i przypisz go do zmiennejnet. - Zdefiniuj funkcję straty jako entropię krzyżową i przypisz ją do zmiennej
criterion. - Zdefiniuj optymalizator Adam, przekazując mu parametry modelu oraz tempo uczenia równe
0.001, i przypisz go do zmiennejoptimizer. - Rozpocznij pętlę treningową, iterując po obrazach
imagesi etykietachlabelsze zbiorudataloader_train.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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}")