Applez Nous: +41 22 518 70 00
Développé à l’origine par Meta AI et adopté massivement par la communauté scientifique internationale (EPFL, ETH Zurich, Stanford), PyTorch s’appuie sur le concept de graphe de calcul dynamique (Define-by-Run). Chaque opération sur un tenseur construit à la volée le graphe permettant la différentiation automatique rétrograde :
import torch
import torch.nn as nn
import torch.optim as optim
# Définition modulaire d'un Perceptron Multicouche (MLP)
class ReseauProfondEducasuisse(nn.Module):
def __init__(self, dim_entree: int, dim_cachee: int, nb_classes: int):
super(ReseauProfondEducasuisse, self).__init__()
self.couches = nn.Sequential(
nn.Linear(dim_entree, dim_cachee),
nn.BatchNorm1d(dim_cachee),
nn.GELU(),
nn.Dropout(p=0.3),
nn.Linear(dim_cachee, dim_cachee // 2),
nn.GELU(),
nn.Linear(dim_cachee // 2, nb_classes)
)
def forward(self, x: torch.Tensor) -> torch.Tensor:
return self.couches(x)
# Transfert du modèle sur GPU NVIDIA CUDA
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
modele = ReseauProfondEducasuisse(dim_entree=128, dim_cachee=512, nb_classes=10).to(device)
L’étudiant apprend à architecturer une boucle d’entraînement découplée et robuste : gestion des générateurs de mini-lots (DataLoader), remise à zéro explicite des gradients (optimizer.zero_grad()), passe avant, calcul de perte, rétropropagation (loss.backward()) et mise à jour des paramètres synaptiques (optimizer.step()).