Fonction torch.manual_seed de PyTorch
Manuel de référence Pytorch torch
torch.manual_seedest une fonction dans PyTorch utilisée pour définir la graine du générateur de nombres aléatoires. Définir la graine garantit la reproductibilité des résultats.
Ceci est très important lorsque les résultats expérimentaux doivent être reproductibles, comme dans le débogage, la reproduction d'articles et d'autres scénarios.
Définition de fonction
torch.manual_seed(seed)
Parameters:
seed(int) : La graine aléatoire.
Valeur de retour:
Nothing
Exemples d'utilisation
Exemple 1 : Définition de la graine pour garantir la reproductibilité
Exemple
import torch
# Définir la graine aléatoire
torch.manual_seed(42)
# Les nombres aléatoires générés à chaque fois sont les mêmes
x = torch.randn(3)
print("Première fois :", x)
# Réinitialiser la même graine
torch.manual_seed(42)
y = torch.randn(3)
print("Deuxième fois :", y)
print("Les résultats sont identiques :", torch.equal(x, y))
# Définir la graine aléatoire
torch.manual_seed(42)
# Les nombres aléatoires générés à chaque fois sont les mêmes
x = torch.randn(3)
print("Première fois :", x)
# Réinitialiser la même graine
torch.manual_seed(42)
y = torch.randn(3)
print("Deuxième fois :", y)
print("Les résultats sont identiques :", torch.equal(x, y))
La sortie est :
第一次: tensor([ 0.3367, 0.1288, 0.2345]) 第二次: tensor([ 0.3367, 0.1288, 0.2345]) 结果相同: True
Exemple 2 : Entraînement entièrement reproductible
Exemple
import torch
import random
import numpy as np
def set_seed(seed=42):
# Définir la graine PyTorch
torch.manual_seed(seed)
# Définir la graine NumPy
np.random.seed(seed)
# Définir la graine aléatoire Python
random.seed(seed)
# Assurer un bon déterminisme CUDA (si utilisé)
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False
# Définir la graine
set_seed(42)
# Générer des données aléatoires
x = torch.randn(3, 4)
print(x)
import random
import numpy as np
def set_seed(seed=42):
# Définir la graine PyTorch
torch.manual_seed(seed)
# Définir la graine NumPy
np.random.seed(seed)
# Définir la graine aléatoire Python
random.seed(seed)
# Assurer un bon déterminisme CUDA (si utilisé)
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False
# Définir la graine
set_seed(42)
# Générer des données aléatoires
x = torch.randn(3, 4)
print(x)
La sortie est :
tensor([[ 0.3367, 0.1288, 0.2345, 0.2303],
[-1.1229, -0.1863, 0.1735, -0.5524],
[ 0.6351, -0.2582, 0.4602, -0.5270]])
Pour garantir pleinement la reproductibilité, vous devez définir simultanément les graines de PyTorch, NumPy et Python random.
Autres extensions