Problèmes des MLP pour les images :
Avantages des CNN :
Les filtres de convolution :
Paramètres clés de conv2d :
in_channels : nombre de canaux en entrée (3 pour RGB)out_channels : nombre de filtres à apprendrekernel_size : taille du filtre (3×3, 5×5, etc.)stride : pas de déplacement (1 par défaut)padding : zéros ajoutés autour (préserve la taille si =1)Calcul de la taille de sortie : \(H_{out} = \left\lfloor \frac{H_{in} + 2 \times \text{padding} - \text{kernel_size}}{\text{stride}} \right\rfloor + 1\)
Le padding : essentiel pour ne pas perdre d'information sur les bords.
Max Pooling (le plus utilisé) :
Avantages :
Trois approches :
Avantages : exploite le GPU, estime bien le gradient, régularisation naturelle.
Dataset : classe pour organiser vos données
__len__ et __getitem__DataLoader : automatise le chargement
shuffle=True pour train, False pour val/test)num_workers)✓ Bonnes pratiques : Toujours utiliser Dataset et DataLoader pour gérer les données
Proportions recommandées :
⚠️ Règle d'or : Ne JAMAIS utiliser le test set pendant l'entraînement !
✓ Bonnes pratiques : Utiliser random_split pour diviser automatiquement et toujours séparer les trois ensembles
Prétraitement (toujours nécessaire) :
ToTensor() : convertit en tenseur PyTorchNormalize(mean, std) : centre les valeurs autour de 0Augmentation (train uniquement) :
RandomHorizontalFlip() : retourne horizontalementRandomRotation() : rotation aléatoireColorJitter() : modifie luminosité/contraste💡 Pourquoi pas d'augmentation pour val/test ? On veut évaluer sur les vraies images.
✓ Bonnes pratiques : Augmentation uniquement pour l'entraînement, jamais pour validation/test
Trois méthodes :
torch.save(model, 'model.pth') (éviter si possible)torch.save(model.state_dict(), 'weights.pth')✓ Bonnes pratiques : Préférer state_dict() au modèle complet, sauvegarder le meilleur modèle basé sur validation loss, inclure epoch et optimizer dans les checkpoints