CommencezCommencez gratuitement

Boucle d'entraînement du classifieur d'images

Il est temps d'entraîner le classifieur 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 respectivement sous les noms nn et optim. Vous n'avez rien à modifier dans la boucle d'entraînement elle-même : elle est exactement comme celles que vous avez déjà écrites, avec en plus une logique pour afficher la perte pendant l'entraînement.

Cette activité fait partie du cours

Apprentissage profond intermédiaire avec PyTorch

Voir le cours

Instructions de l’exercice

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

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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