CommencerCommencer gratuitement

Boucle d'apprentissage du classificateur d'images

Il est temps d'entraîner le classificateur d'images ! Vous utiliserez le site Net que vous avez défini précédemment et vous l'entraînerez à faire la distinction entre sept types de nuages.

Pour définir la perte et l'optimiseur, vous devrez utiliser les fonctions de torch.nn et torch.optim, importées pour vous sous les noms nn et optim, respectivement. Vous n'avez pas besoin de changer quoi que ce soit dans la boucle d'entraînement elle-même : elle est exactement comme celles que vous avez écrites auparavant, avec une logique supplémentaire pour imprimer la perte pendant l'entraînement.

Cet exercice fait partie du cours

Apprentissage profond intermédiaire avec PyTorch

Afficher le cours

Instructions

  • Définissez le modèle à l'aide de votre classe Net avec num_classes fixé à 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 transmettant les paramètres du modèle et le taux d'apprentissage de 0.001, et affectez-le à optimizer.
  • Commencez la boucle d'apprentissage en itérant sur l'apprentissage images et labels 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