Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Rétropropagation Multi-Étapes | Concepts Plus Avancés
Essentiels de Pytorch

book
Rétropropagation Multi-Étapes

Comme Tensorflow, PyTorch vous permet également de construire des graphes computationnels plus complexes impliquant plusieurs tenseurs intermédiaires.

import torch
# Create a 2D tensor with gradient tracking
x = torch.tensor([[1.0, 2.0, 3.0], [3.0, 2.0, 1.0]], requires_grad=True)
# Define intermediate layers
y = 6 * x + 3
z = 10 * y ** 2
# Compute the mean of the final output
output_mean = z.mean()
print(f"Output: {output_mean}")
# Perform backpropagation
output_mean.backward()
# Print the gradient of x
print("Gradient of x:\n", x.grad)
12345678910111213
import torch # Create a 2D tensor with gradient tracking x = torch.tensor([[1.0, 2.0, 3.0], [3.0, 2.0, 1.0]], requires_grad=True) # Define intermediate layers y = 6 * x + 3 z = 10 * y ** 2 # Compute the mean of the final output output_mean = z.mean() print(f"Output: {output_mean}") # Perform backpropagation output_mean.backward() # Print the gradient of x print("Gradient of x:\n", x.grad)
copy

Le gradient de output_mean par rapport à x est calculé en utilisant la règle de chaîne. Le résultat montre combien un petit changement dans chaque élément de x affecte output_mean.

Désactivation du Suivi des Gradients

Dans certains cas, vous pouvez vouloir désactiver le suivi des gradients pour économiser de la mémoire et des calculs. Puisque requires_grad=False est le comportement par défaut, vous pouvez simplement créer le tenseur sans spécifier ce paramètre:

python
x = torch.tensor([[1.0, 2.0, 3.0], [3.0, 2.0, 1.0]])
Tâche

Swipe to start coding

Vous êtes chargé de construire un réseau de neurones simple avec PyTorch. Votre objectif est de calculer le gradient de la perte par rapport à la matrice de poids.

  1. Définissez une matrice de poids aléatoire (tenseur) W de forme 1x3 initialisée avec des valeurs d'une distribution uniforme sur [0, 1], avec le suivi des gradients activé.
  2. Créez une matrice d'entrée (tenseur) X basée sur cette liste : [[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]].
  3. Effectuez une multiplication de matrices pour calculer Y.
  4. Calculez l'erreur quadratique moyenne (MSE) : loss = mean((Y - Ytarget)2).
  5. Calculez le gradient de la perte (loss) par rapport à W en utilisant la rétropropagation.
  6. Imprimez le gradient calculé de W.

Solution

import torch

# Define the weight matrix with random initialization
W = torch.rand(1, 3, requires_grad=True)
# Define the input matrix
X = torch.tensor([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])
# Perform matrix multiplication to calculate Y
Y = W @ X
# Target tensor
Y_target = torch.tensor([[10.0, 20.0]])
# Compute the MSE loss
loss = ((Y - Y_target)**2).mean()
# Perform backpropagation
loss.backward()
# Print the gradient of W
print("Gradient of W:\n", W.grad)

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 2
single

single

import torch

# Define the weight matrix with random initialization
W = torch.rand(1, 3, ___)
# Define the input matrix
X = ___
# Perform matrix multiplication to calculate Y
Y = ___
# Target tensor
Y_target = torch.tensor([[10.0, 20.0]])
# Compute the MSE loss
loss = ___
# Perform backpropagation
___
# Print the gradient of W
print("Gradient of W:\n", ___)

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

some-alt