Aan de slagGa gratis aan de slag

Trainingslus voor beeldclassificatie

Tijd om de beeldclassifier te trainen! Je gebruikt de Net die je eerder hebt gedefinieerd en traint deze om zeven soorten wolken te onderscheiden.

Om de loss en optimizer te definiëren, gebruik je functies uit torch.nn en torch.optim, die voor je zijn geïmporteerd als respectievelijk nn en optim. Je hoeft niets te wijzigen aan de trainingslus zelf: die is precies zoals je eerder schreef, met extra logica om de loss tijdens het trainen te printen.

Deze oefening maakt deel uit van de cursus

Gevorderde Deep Learning met PyTorch

Cursus bekijken

Oefeninstructies

  • Definieer het model met je Net-klasse met num_classes ingesteld op 7 en wijs het toe aan net.
  • Definieer de verliesfunctie als cross-entropy loss en wijs deze toe aan criterion.
  • Definieer de optimizer als Adam, geef de modelparameters en de learning rate 0.001 mee, en wijs deze toe aan optimizer.
  • Start de trainings-for-loop door te itereren over de trainings-images en labels van dataloader_train.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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}")
Code bewerken en uitvoeren