CommencerCommencer gratuitement

Boucle d’entraînement du classificateur d’images

Il est temps d’entraîner le classificateur d’images ! Vous allez utiliser le Net défini plus tôt et l’entraîner à distinguer sept types de nuages.

Pour définir la fonction de perte et l’optimiseur, vous devrez utiliser des fonctions de torch.nn et torch.optim, importées pour vous sous les noms nn et optim. Vous n’avez rien à changer dans la boucle d’entraînement elle-même : elle est identique à celles que vous avez écrites auparavant, avec un peu de logique supplémentaire pour afficher la perte pendant l’entraînement.

Cet exercice fait partie du cours

Deep learning intermédiaire avec PyTorch

Afficher le cours

Instructions

  • Définissez le modèle en utilisant votre classe Net avec num_classes défini à 7 et affectez-le à net.
  • Définissez la fonction de perte comme une perte d’entropie croisée et affectez-la à criterion.
  • Définissez l’optimiseur comme Adam, en lui passant les paramètres du modèle et un taux d’apprentissage de 0.001, puis affectez-le à optimizer.
  • Démarrez la boucle for d’entraînement en itérant sur les images et labels d’entraînement de dataloader_train.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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}")
Modifier et exécuter le code