Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Zdefiniuj model, używając klasy Net z parametrem num_classes ustawionym na 7, i przypisz go do zmiennej net.
  • 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 zmiennej optimizer.
  • Rozpocznij pętlę treningową, iterując po obrazach images i etykietach labels ze zbioru dataloader_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}")
Edytuj i uruchom kod