PyTorTutoriel ch

โšก Rรฉsumรฉ intelligent

PyTorch est le framework d'apprentissage profond open-source de Meta, qui alimente dรฉsormais 85 % des articles de recherche en IA en 2026. LessCes modules couvrent l'installation, les bases du framework, la rรฉgression simple, la classification d'images et le dรฉploiement d'AWS SageMaker.

  • ๐Ÿง  Graphiques dynamiques : L'exรฉcution immรฉdiate signifie que les tenseurs sont exรฉcutรฉs ligne par ligne, en facilitant l'exรฉcution. Python-dรฉbogage de style.
  • (I.e. PythonAPI ic : La lecture est naturelle pour toute personne familiรจre avec NumPy et Python.
  • ๐Ÿ“ฆ Un รฉcosystรจme riche : Hugging Face, vLLM, DeepSpeed โ€‹โ€‹et TorchVision est construit sur PyTorch.
  • โš™๏ธ Flux de travail de formation : Dรฉfinir le modรจle, choisir la fonction de perte et l'optimiseur, puis boucler en avant, en arriรจre et par pas.
  • (I.e. Domination en matiรจre de recherche : 85 % des articles rรฉcents utilisent PyTorch contre 15 pour cent TensorFlow.
  • ๐Ÿค– Prรชt pour un LLM : Prise en charge native des transformateurs, du rรฉglage fin LoRA et des flux de travail de quantification.

PyTorTutoriel ch

Qu'est-ce que PyTorch?

PyTorch est un open-source TorBibliothรจque d'apprentissage automatique basรฉe sur ch pour le traitement du langage naturel utilisant PythonIl est similaire ร  NumPy, mais avec une prise en charge GPU performante. Il offre des graphes de calcul dynamiques que vous pouvez modifier ร  la volรฉe grรขce ร  autograd.Torch est รฉgalement plus rapide que certains autres frameworks. Il a รฉtรฉ dรฉveloppรฉ par le groupe de recherche en IA de Facebook en 2016.

Connaรฎtre ce que PyTorch propose une analyse รฉquilibrรฉe de ses points forts et de ses points faibles.

PyToravantages et inconvรฉnients

Voici les avantages et les inconvรฉnients de PyTorch:

Avantages de PyTorch

  1. Bibliothรจque simplifiรฉe
    PyTorLe code ch est simple. Il est facile ร  comprendre et vous pouvez utiliser la bibliothรจque immรฉdiatement. Par exemple, regardez l'extrait de code ci-dessous :
class Net(torch.nn.Module):
   def __init__(self):
       super(Net, self).__init__()
       self.layer = torch.nn.Linear(1, 1)

   def forward(self, x):
       x = self.layer(x)      
       return x

Comme mentionnรฉ ci-dessus, vous pouvez dรฉfinir facilement le modรจle de rรฉseau et comprendre le code rapidement sans trop de formation.

  1. Graphique informatique dynamique

Graphique informatique dynamique

Source de l'image : Explorer l'apprentissage profond avec PyTorch

PyTorch propose des graphes de calcul dynamiques (DAG). Les graphes de calcul permettent d'exprimer des expressions mathรฉmatiques ร  l'aide de modรจles ou de thรฉories graphiques, tels que des nล“uds et des arรชtes. Chaque nล“ud effectue l'opรฉration mathรฉmatique, et chaque arรชte est un tenseur qui est transmis aux nล“uds et transporte leur rรฉsultat sous forme de tenseur.

DAG est un graphique qui a une forme arbitraire et capable d'effectuer des opรฉrations entre diffรฉrents graphiques d'entrรฉe. ร€ chaque itรฉration, un nouveau graphique est crรฉรฉ. Ainsi, il est possible dโ€™avoir la mรชme structure de graphe ou de crรฉer un nouveau graphe avec une opรฉration diffรฉrente, ou encore on peut lโ€™appeler un graphe dynamique.

  1. Meilleures performances

Les communautรฉs et les chercheurs รฉvaluent et comparent les frameworks pour voir lequel est le plus rapide. Un dรฉpรดt GitHub Benchmark sur les frameworks de Deep Learning et les GPU Py a signalรฉ que PyTorch est plus rapide que les autres frameworks en termes d'images traitรฉes par seconde.

Comme vous pouvez le voir ci-dessous, les graphiques de comparaison avec vgg16 et resnet152

Avantages de PyTorch

Avantages de PyTorch

  1. Originaire Python

PyTorch est davantage basรฉ sur Python. Par exemple, si vous souhaitez entraรฎner un modรจle, vous pouvez utiliser le flux de contrรดle natif tel que looping et des rรฉcursions sans avoir besoin d'ajouter de variables ou de sessions spรฉcifiques pour pouvoir les exรฉcuter. Ceci est trรจs utile pour le processus de formation.

PyTorch implรฉmente รฉgalement la programmation impรฉrative et offre une plus grande flexibilitรฉ. Il est donc possible d'afficher la valeur du tenseur en cours de calcul.

Inconvรฉnient de PyTorch

PyTorch nรฉcessite des applications tierces pour la visualisation. Il requiert รฉgalement un serveur API pour la production.

Prochain article sur PyTorDans ce tutoriel, nous apprendrons la diffรฉrence entre PyTorch et TensorFlow.

PyTorch contre TensorFlow

Paramรจtres PyTorch TensorFlow
Dรฉfinition du modรจle Le modรจle est dรฉfini dans une sous-classe et propose un package facile ร  utiliser Le modรจle est dรฉfini avec plusieurs et vous devez comprendre la syntaxe
Prise en charge du GPU Oui Oui
Type de graphique Dynamique Statique
Outils Aucun outil de visualisation Vous pouvez utiliser l'outil de visualisation Tensorboard
Communautรฉ La communautรฉ continue de s'agrandir De grandes communautรฉs actives

Compte tenu de cette comparaison, l'รฉtape suivante consiste ร  obtenir PyTorch exรฉcutรฉ localement ou dans le cloud.

Installation de PyTorch

Linux

Il est simple de l'installer sous Linux. Vous pouvez choisir d'utiliser un environnement virtuel ou de l'installer directement avec un accรจs root. Tapez cette commande dans le terminal

pip3 install --upgrade torch torchvision

AWS Sagemaker

Sagemaker est l'une des plateformes de Amazon Service Web qui offre un puissant moteur d'apprentissage automatique avec des configurations d'apprentissage en profondeur prรฉinstallรฉes permettant aux scientifiques des donnรฉes ou aux dรฉveloppeurs de crรฉer, former et dรฉployer des modรจles ร  n'importe quelle รฉchelle.

Ouvrez d'abord le Amazon Faiseur de sauge console et cliquez sur Crรฉer une instance de notebook et remplissez tous les dรฉtails de votre notebook.

AWS Sagemaker

ร‰tape suivante, cliquez sur Ouvrir pour lancer votre instance de notebook.

AWS Sagemaker

Enfin, dans JupyterCliquez sur Nouveau et choisissez conda_pytorch_p36 ; votre instance de notebook est alors prรชte ร  รชtre utilisรฉe avec Py.Torch installรฉ.

Prochain article sur PyTorDans ce tutoriel, nous allons apprendre Py.TorPrincipes de base du cadre ch.

L'installation รฉtant en place, l'API elle-mรชme est la prochaine รฉtape.

PyTorBases du cadre ch

Apprenons les concepts de base de PyTorch avant de plonger dans le vif du sujet. PyTorch utilise des tenseurs pour chaque variable, ร  l'instar des tableaux NumPy (ndarray), mais avec la prise en charge du calcul sur GPU. Nous allons ici expliquer le modรจle de rรฉseau, la fonction de perte, la rรฉtropropagation et l'optimiseur.

Modรจle de rรฉseau

Le rรฉseau peut รชtre construit en sous-classant torch.nn. Il y a 2 parties principales,

  1. La premiรจre partie consiste ร  dรฉfinir les paramรจtres et les calques que vous utiliserez
  2. La deuxiรจme partie est la tรขche principale appelรฉe processus avancรฉ qui prendra une entrรฉe et prรฉdira la sortie.
Import torch
import torch.nn as nn
import torch.nn.functional as F

class Model(nn.Module):
 def __init__(self):
        super(Model, self).__init__()
        self.conv1 = nn.Conv2d(3, 20, 5)
        self.conv2 = nn.Conv2d(20, 40, 5)
self.fc1 = nn.Linear(320, 10)

def forward(self, x):
       x = F.relu(self.conv1(x))
       x = F.relu(self.conv2(x))
       x = x.view(-1, 320)
       x = F.relu(self.fc1(x))
       return F.log_softmax(x)

net = Model()

Comme vous pouvez le voir ci-dessus, vous crรฉez une classe de nn.Module appelรฉe Model. Il contient 2 calques Conv2d et un calque linรฉaire. La premiรจre couche conv2d prend une entrรฉe de 3 et la forme de sortie de 20. La deuxiรจme couche prendra une entrรฉe de 20 et produira une forme de sortie de 40. La derniรจre couche est une couche entiรจrement connectรฉe en forme de 320 et produira une sortie de 10.

Le processus forward prendra une entrรฉe de X et la transmettra ร  la couche conv1 et exรฉcutera la fonction ReLU,

De mรชme, il alimentera รฉgalement la couche conv2. Aprรจs cela, le x sera remodelรฉ en (-1, 320) et alimentera la couche FC finale. Avant d'envoyer la sortie, vous utiliserez la fonction d'activation softmax.

Le processus en arriรจre est automatiquement dรฉfini par autograd, il vous suffit donc de dรฉfinir le processus en avant.

Fonction de perte

La fonction de perte sert ร  mesurer la capacitรฉ du modรจle de prรฉdiction ร  prรฉdire les rรฉsultats attendus. PyTorch dispose dรฉjร  de nombreuses fonctions de perte standard dans le module torch.nn. Par exemple, vous pouvez utiliser la perte d'entropie croisรฉe pour rรฉsoudre un problรจme Py multiclasse.Torproblรจme de classification ch. Il est facile de dรฉfinir la fonction de perte et de calculer les pertes :

loss_fn = nn.CrossEntropyLoss()

#training process
loss = loss_fn(out, target)

Il est facile d'utiliser votre propre calcul de fonction de perte avec PyTorch.

Contre-propriรฉtรฉ

Pour effectuer la rรฉtropropagation, vous appelez simplement los.backward(). L'erreur sera calculรฉe mais n'oubliez pas d'effacer le dรฉgradรฉ existant avec zero_grad()

net.zero_grad() # to clear the existing gradient
loss.backward() # to perform backpropragation

Optimizer

Le torch.optim fournit des algorithmes dโ€™optimisation courants. Vous pouvez dรฉfinir un optimiseur en une รฉtape simple :

optimizer = torch.optim.SGD(net.parameters(), lr = 0.01, momentum=0.9)

Vous devez transmettre les paramรจtres du modรจle de rรฉseau et le taux d'apprentissage afin qu'ร  chaque itรฉration, les paramรจtres soient mis ร  jour aprรจs le processus de backprop.

La meilleure faรงon d'apprendre l'API est de rรฉaliser un petit exemple complet.

Rรฉgression simple avec PyTorch

Apprenons la rรฉgression simple avec PyTorexemples ch :

ร‰tape 1) Crรฉation de notre modรจle de rรฉseau

Notre modรจle de rรฉseau est une simple couche linรฉaire avec une forme d'entrรฉe et de sortie de 1.

from __future__ import print_function

import torch
import torch.nn as nn
import torch.nn.functional as F
from torch.autograd import Variable

class Net(nn.Module):
   def __init__(self):
       super(Net, self).__init__()
       self.layer = torch.nn.Linear(1, 1)

   def forward(self, x):
       x = self.layer(x)      
       return x

net = Net()
print(net)

Et la sortie rรฉseau devrait รชtre comme รงa

Net(
  (hidden): Linear(in_features=1, out_features=1, bias=True)
)

ร‰tape 2) Tester les donnรฉes

Avant de commencer le processus de formation, vous devez connaรฎtre nos donnรฉes. Vous crรฉez une fonction alรฉatoire pour tester notre modรจle. Oui = x3 pรฉchรฉ(x)+ 3x+0.8 rand(100)

# Visualize our data
import matplotlib.pyplot as plt
import numpy as np

x = np.random.rand(100)
y = np.sin(x) * np.power(x,3) + 3*x + np.random.rand(100)*0.8

plt.scatter(x, y)
plt.show()

Voici le nuage de points de notre fonction :

Diagramme de dispersion de la rรฉgression simple avec PyTorch

Avant de commencer le processus d'entraรฎnement, vous devez convertir le tableau numpy en variables prises en charge par Torch et autograd comme indiquรฉ dans le Py ci-dessousTorExemple de rรฉgression ch.

# convert numpy array to tensor in shape of input size
x = torch.from_numpy(x.reshape(-1,1)).float()
y = torch.from_numpy(y.reshape(-1,1)).float()
print(x, y)

ร‰tape 3) Optimiseur et perte

Ensuite, vous devez dรฉfinir l'optimiseur et la fonction de perte pour notre processus de formation.

# Define Optimizer and Loss Function
optimizer = torch.optim.SGD(net.parameters(), lr=0.2)
loss_func = torch.nn.MSELoss()

ร‰tape 4) Formation

Commenรงons maintenant notre processus de formation. Avec une รฉpoque de 250, vous itรฉrerez nos donnรฉes pour trouver la meilleure valeur pour nos hyperparamรจtres.

inputs = Variable(x)
outputs = Variable(y)
for i in range(250):
   prediction = net(inputs)
   loss = loss_func(prediction, outputs) 
   optimizer.zero_grad()
   loss.backward()        
   optimizer.step()       

   if i % 10 == 0:
       # plot and show learning process
       plt.cla()
       plt.scatter(x.data.numpy(), y.data.numpy())
       plt.plot(x.data.numpy(), prediction.data.numpy(), 'r-', lw=2)
       plt.text(0.5, 0, 'Loss=%.4f' % loss.data.numpy(), fontdict={'size': 10, 'color':  'red'})
       plt.pause(0.1)

plt.show()

ร‰tape 5) Rรฉsultat

Comme vous pouvez le constater ci-dessous, vous avez exรฉcutรฉ Py avec succรจs.TorRรฉgression ch avec un rรฉseau de neurones. En rรฉalitรฉ, ร  chaque itรฉration, la ligne rouge du graphique se met ร  jour et change de position pour s'adapter aux donnรฉes. Mais sur cette image, seul le rรฉsultat final est affichรฉ, comme indiquรฉ dans le code Py ci-dessous.TorExemple ch :

Diagramme de dispersion du rรฉsultat de la rรฉgression simple

La rรฉgression est un รฉchauffement ; la classification d'images sollicite les capacitรฉs d'apprentissage profond de Python.Torch.

Exemple de classification d'images avec PyTorch

L'une des mรฉthodes populaires pour apprendre les bases de l'apprentissage en profondeur est avec l'ensemble de donnรฉes MNIST. C'est le ยซ Hello World ยป dans le deep learning. L'ensemble de donnรฉes contient des nombres manuscrits de 0 ร  9 avec un total de 60,000 10,000 รฉchantillons d'apprentissage et 28 28 รฉchantillons de test dรฉjร  รฉtiquetรฉs avec une taille de ร— pixels.

Classification d'images avec PyTorch

ร‰tape 1) Prรฉtraiter les donnรฉes

Dans la premiรจre รฉtape de ce PyTorDans cet exemple de classification ch, vous chargerez l'ensemble de donnรฉes ร  l'aide du module torchvision.

Avant de commencer le processus de formation, vous devez comprendre les donnรฉes. Torchvision chargera l'ensemble de donnรฉes et transformera les images en fonction des exigences du rรฉseau, notamment en modifiant leur forme et en normalisant les images.

import torch
import torchvision
import numpy as np
from torchvision import datasets, models, transforms

# This is used to transform the images to Tensor and normalize it
transform = transforms.Compose(
   [transforms.ToTensor(),
    transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])

training = torchvision.datasets.MNIST(root='./data', train=True,
                                       download=True, transform=transform)
train_loader = torch.utils.data.DataLoader(training, batch_size=4,
                                         shuffle=True, num_workers=2)

testing = torchvision.datasets.MNIST(root='./data', train=False,
                                      download=True, transform=transform)
test_loader = torch.utils.data.DataLoader(testing, batch_size=4,
                                        shuffle=False, num_workers=2)

classes = ('0', '1', '2', '3',
          '4', '5', '6', '7', '8', '9')
         
import matplotlib.pyplot as plt
import numpy as np

#create an iterator for train_loader
# get random training images
data_iterator = iter(train_loader)
images, labels = data_iterator.next()

#plot 4 images to visualize the data
rows = 2
columns = 2
fig=plt.figure()
for i in range(4):
   fig.add_subplot(rows, columns, i+1)
   plt.title(classes[labels[i]])
   img = images[i] / 2 + 0.5     # this is for unnormalize the image
   img = torchvision.transforms.ToPILImage()(img)
   plt.imshow(img)
plt.show()

La fonction de transformation convertit les images en tenseur et normalise la valeur. La fonction torchvision.transforms.MNIST tรฉlรฉchargera l'ensemble de donnรฉes (s'il n'est pas disponible) dans le rรฉpertoire, dรฉfinira l'ensemble de donnรฉes pour la formation si nรฉcessaire et effectuera le processus de transformation.

Pour visualiser l'ensemble de donnรฉes, vous utilisez le data_iterator pour obtenir le prochain lot d'images et d'รฉtiquettes. Vous utilisez matplot pour tracer ces images et leur รฉtiquette appropriรฉe. Comme vous pouvez le voir ci-dessous nos images et leurs รฉtiquettes.

Exemple de classification d'images avec PyTorch

ร‰tape 2) Configuration du modรจle de rรฉseau

Maintenant, dans ce PyTorPar exemple, vous allez crรฉer un rรฉseau neuronal simple pour Py.Torclassification d'images ch.

Nous vous prรฉsentons ici une autre faรงon de crรฉer le modรจle de rรฉseau en Python.Torch. Nous utiliserons nn.Sequential pour crรฉer un modรจle de sรฉquence au lieu de crรฉer une sous-classe de nn.Module.

import torch.nn as nn

# flatten the tensor into 
class Flatten(nn.Module):
   def forward(self, input):
       return input.view(input.size(0), -1)

#sequential based model
seq_model = nn.Sequential(
           nn.Conv2d(1, 10, kernel_size=5),
           nn.MaxPool2d(2),
           nn.ReLU(),
           nn.Dropout2d(),
           nn.Conv2d(10, 20, kernel_size=5),
           nn.MaxPool2d(2),
           nn.ReLU(),
           Flatten(),
           nn.Linear(320, 50),
           nn.ReLU(),
           nn.Linear(50, 10),
           nn.Softmax(),
         )

net = seq_model
print(net)

Voici le rรฉsultat de notre modรจle de rรฉseau

Sequential(
  (0): Conv2d(1, 10, kernel_size=(5, 5), stride=(1, 1))
  (1): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
  (2): ReLU()
  (3): Dropout2d(p=0.5)
  (4): Conv2d(10, 20, kernel_size=(5, 5), stride=(1, 1))
  (5): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
  (6): ReLU()
  (7): Flatten()
  (8): Linear(in_features=320, out_features=50, bias=True)
  (9): ReLU()
  (10): Linear(in_features=50, out_features=10, bias=True)
  (11): Softmax()
)

Explication du rรฉseau

  1. La sรฉquence est que la premiรจre couche est une couche Conv2D avec une forme d'entrรฉe de 1 et une forme de sortie de 10 avec une taille de noyau de 5.
  2. Ensuite, vous avez une couche MaxPool2D
  3. Une fonction d'activation ReLU
  4. une couche Dropout pour supprimer les valeurs de faible probabilitรฉ.
  5. Puis un deuxiรจme Conv2d avec la forme d'entrรฉe de 10 de la derniรจre couche et la forme de sortie de 20 avec une taille de noyau de 5
  6. Ensuite une couche MaxPool2d
  7. Fonction d'activation ReLU.
  8. Aprรจs cela, vous aplatirez le tenseur avant de l'insรฉrer dans le calque linรฉaire.
  9. La couche linรฉaire mappera notre sortie sur la deuxiรจme couche linรฉaire avec la fonction d'activation softmax

ร‰tape 3) Former le modรจle

Avant de dรฉmarrer le processus de formation, il est nรฉcessaire de configurer la fonction de critรจre et d'optimisation.

Pour le critรจre, vous utiliserez la perte d'entropie croisรฉe (CrossEntropyLoss). Pour l'optimiseur, vous utiliserez la descente de gradient stochastique (SGD) avec un taux d'apprentissage de 0.001 et un momentum de 0.9, comme indiquรฉ dans le code Python ci-dessous.Torch exemple.

import torch.optim as optim

criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)

Le processus avancรฉ prendra la forme d'entrรฉe et la transmettra ร  la premiรจre couche conv2d. Ensuite, ร  partir de lร , il sera introduit dans maxpool2d et enfin mis dans la fonction d'activation ReLU. Le mรชme processus se produira dans la deuxiรจme couche conv2d. Aprรจs cela, l'entrรฉe sera remodelรฉe en (-1,320 ) et alimentera la couche fc pour prรฉdire la sortie.

Maintenant, vous allez commencer le processus de formation. Vous parcourrez notre ensemble de donnรฉes 2 fois ou avec une รฉpoque de 2 et imprimerez la perte actuelle tous les 2000 lots.

for epoch in range(2): 

#set the running loss at each epoch to zero
   running_loss = 0.0
# we will enumerate the train loader with starting index of 0
# for each iteration (i) and the data (tuple of input and labels)
   for i, data in enumerate(train_loader, 0):
       inputs, labels = data

# clear the gradient
       optimizer.zero_grad()

#feed the input and acquire the output from network
       outputs = net(inputs)

#calculating the predicted and the expected loss
       loss = criterion(outputs, labels)

#compute the gradient
       loss.backward()

#update the parameters
       optimizer.step()

       # print statistics
       running_loss += loss.item()
       if i % 1000 == 0:
           print('[%d, %5d] loss: %.3f' %
                 (epoch + 1, i + 1, running_loss / 1000))
           running_loss = 0.0

ร€ chaque รฉpoque, l'รฉnumรฉrateur obtiendra le prochain tuple d'entrรฉe et les รฉtiquettes correspondantes. Avant d'alimenter notre modรจle de rรฉseau, nous devons effacer le gradient prรฉcรฉdent. Ceci est nรฉcessaire car aprรจs le processus inverse (processus de rรฉtropropagation), le gradient sera accumulรฉ au lieu d'รชtre remplacรฉ. Ensuite, nous calculerons les pertes de la production prรฉvue ร  partir de la production attendue. Aprรจs cela, nous ferons une rรฉtropropagation pour calculer le gradient, et enfin, nous mettrons ร  jour les paramรจtres.

Voici le rรฉsultat du processus de formation

[1, 	1] loss: 0.002
[1,  1001] loss: 2.302
[1,  2001] loss: 2.295
[1,  3001] loss: 2.204
[1,  4001] loss: 1.930
[1,  5001] loss: 1.791
[1,  6001] loss: 1.756
[1,  7001] loss: 1.744
[1,  8001] loss: 1.696
[1,  9001] loss: 1.650
[1, 10001] loss: 1.640
[1, 11001] loss: 1.631
[1, 12001] loss: 1.631
[1, 13001] loss: 1.624
[1, 14001] loss: 1.616
[2, 	1] loss: 0.001
[2,  1001] loss: 1.604
[2,  2001] loss: 1.607
[2,  3001] loss: 1.602
[2,  4001] loss: 1.596
[2,  5001] loss: 1.608
[2,  6001] loss: 1.589
[2,  7001] loss: 1.610
[2,  8001] loss: 1.596
[2,  9001] loss: 1.598
[2, 10001] loss: 1.603
[2, 11001] loss: 1.596
[2, 12001] loss: 1.587
[2, 13001] loss: 1.596
[2, 14001] loss: 1.603

ร‰tape 4) Testez le modรจle

Aprรจs avoir entraรฎnรฉ notre modรจle, vous devez tester ou รฉvaluer avec d'autres ensembles d'images.

Nous utiliserons un itรฉrateur pour le test_loader, et il gรฉnรฉrera un lot d'images et d'รฉtiquettes qui seront transmises au modรจle entraรฎnรฉ. La sortie prรฉvue sera affichรฉe et comparรฉe ร  la sortie attendue.

#make an iterator from test_loader
#Get a batch of training images
test_iterator = iter(test_loader)
images, labels = test_iterator.next()

results = net(images)
_, predicted = torch.max(results, 1)

print('Predicted: ', ' '.join('%5s' % classes[predicted[j]] for j in range(4)))

fig2 = plt.figure()
for i in range(4):
   fig2.add_subplot(rows, columns, i+1)
   plt.title('truth ' + classes[labels[i]] + ': predict ' + classes[predicted[i]])
   img = images[i] / 2 + 0.5     # this is to unnormalize the image
   img = torchvision.transforms.ToPILImage()(img)
   plt.imshow(img)
plt.show()

Exemple de classification d'images avec PyTorch

FAQ

Oui, pour la plupart des apprenants. PyTorl'exรฉcution enthousiaste de ch, PythonL'API ic et l'alignement Hugging Face facilitent l'apprentissage. Les enquรชtes montrent que 60 % des dรฉbutants choisissent PyTorch d'abord.

Les assistants IA comme Copilot, Cursor et JetBrains L'IA gรฉnรจre du PyTorIl permet de crรฉer des boucles d'entraรฎnement, de suggรฉrer des architectures de couches et de dรฉboguer les erreurs de forme des tenseurs. Hugging Face Transformers est รฉgalement fourni avec Py.Torpremiers modรจles ch.

Oui. Les outils d'IA fournissent la structure des classes nn.Module, le choix des optimiseurs et les boucles d'entraรฎnement. Ils expliquent รฉgalement les erreurs CUDA, suggรจrent des options de prรฉcision mixte et recommandent la taille des lots en fonction de la structure du jeu de donnรฉes.

PyTorch utilise des graphes dynamiques et domine la recherche. TensorFlow est en tรชte du dรฉploiement en production sur mobile et en pรฉriphรฉrie grรขce ร  TensorFlow Lite. L'รฉcart de performance s'est rรฉduit grรขce ร  torch.compile en Python.Torchapitre 2.

Environ 85 % des articles de recherche sur l'apprentissage profond utilisent PyTorch en 2026. Le modรจle de graphe dynamique se prรชte ร  l'expรฉrimentation, et l'ensemble de l'รฉcosystรจme LLM, de Hugging Face ร  vLLM, est construit autour de PyTorch.

PyTorch s'exรฉcute nativement sur les processeurs et les GPU CUDA, prend en charge ROCm sur les GPU AMD, MPS sur Apple Silicon et les TPU via PyTorProjet ch XLA. Choisissez le bon pรฉriphรฉrique avec les appels .to().

Oui, ร  travers TorchServe, l'exportation ONNX et le nouveau ExecuTorch runtime. TensorFlow Lite reste plus mature pour les appareils mobiles, mais PyTorch rรฉduit rapidement l'รฉcart en matiรจre d'infรฉrence de bord.

Les dรฉbutants construisent leur premier rรฉseau en un jour ou deux. La maรฎtrise des CNN, des transformeurs, de l'entraรฎnement distribuรฉ et du dรฉploiement en production nรฉcessite gรฉnรฉralement trois ร  six mois de travail rรฉgulier sur le projet.

Rรฉsumez cet article avec :