jfo from ubuntu 26
my first commit
81e8069
Raw
History Blame Contribute Delete
1.67 kB
import torch.nn as nn # neural network module
import torch.nn.functional as F
# On va utiliser le dataset MNIST pour tester notre modèle,
# il contient des images de chiffres manuscrits(0-9) de 28x28 pixels
# MNIST est déjà disponible dans la librairie torchvision.datasets,
# on peut l'importer et l'utiliser facilement.
# cette fois ci on aura pas besoin de creer une classe Dataset personnalisée,
# Le Dataset est déjà dans PyTorch, on peut l'utiliser directement.
# MNIST composé de 60000 images pour l'entrainement et 10000 images pour le test,
# si on avait des images brutes, on pouvait partir de
# la classe Dataset pour créer notre propre classe Dataset personnalisée,
# L'objective c'est de faire la classification de ces images,
# c'est à dire prédire le chiffre représenté sur l'image
class Lenet5(nn.Module):
def __init__(self, n_classes=10):
super().__init__()
self.conv1 = nn.Conv2d(1, 6, kernel_size=5)
self.pool1 = nn.AvgPool2d(2, 2)
self.conv2 = nn.Conv2d(6, 16, kernel_size=5)
self.pool2 = nn.AvgPool2d(2, 2)
self.conv3 = nn.Conv2d(16, 120, kernel_size=5)
self.linear1 = nn.Linear(120, 84)
self.linear2 = nn.Linear(84, n_classes)
def forward(self, image):
x = F.tanh(self.conv1(image))
x = F.tanh(self.pool1(x))
x = F.tanh(self.conv2(x))
x = F.tanh(self.pool2(x))
x = F.tanh(self.conv3(x))
x = x.view(x.size(0), -1)
x = F.tanh(self.linear1(x))
x = self.linear2(x) # ← logits bruts, CrossEntropyLoss gère le softmax
return x