PyTorch torch.manual_seed Funktion
PyTorch torch Referenzhandbuch
torch.manual_seedist eine Funktion in PyTorch, die verwendet wird, um den Seed für den Zufallszahlengenerator festzulegen. Das Setzen des Seeds gewährleistet die Reproduzierbarkeit der Ergebnisse.
Dies ist sehr wichtig, wenn experimentelle Ergebnisse reproduzierbar sein müssen, etwa beim Debugging, bei der Reproduktion von Papern und in anderen Szenarien.
Funktionsdefinition
torch.manual_seed(seed)
Parameters:
seed(int): Der Zufallsseed.
Rückgabewert:
Nothing
Anwendungsbeispiele
Beispiel 1: Setzen des Seeds zur Gewährleistung der Reproduzierbarkeit
Beispiel
import torch
# Den Zufallsseed setzen
torch.manual_seed(42)
# Die jedes Mal generierten Zufallszahlen sind dieselben
x = torch.randn(3)
print("Erstes Mal:", x)
# Denselben Seed zurücksetzen
torch.manual_seed(42)
y = torch.randn(3)
print("Zweites Mal:", y)
print("Die Ergebnisse sind dieselben:", torch.equal(x, y))
# Den Zufallsseed setzen
torch.manual_seed(42)
# Die jedes Mal generierten Zufallszahlen sind dieselben
x = torch.randn(3)
print("Erstes Mal:", x)
# Denselben Seed zurücksetzen
torch.manual_seed(42)
y = torch.randn(3)
print("Zweites Mal:", y)
print("Die Ergebnisse sind dieselben:", torch.equal(x, y))
Die Ausgabe ist:
第一次: tensor([ 0.3367, 0.1288, 0.2345]) 第二次: tensor([ 0.3367, 0.1288, 0.2345]) 结果相同: True
Beispiel 2: Vollständig reproduzierbares Training
Beispiel
import torch
import random
import numpy as np
def set_seed(seed=42):
# Den PyTorch-Seed setzen
torch.manual_seed(seed)
# Den NumPy-Seed setzen
np.random.seed(seed)
# Python-Zufallsseed setzen
random.seed(seed)
# Guten CUDA-Determinismus sicherstellen (falls verwendet)
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False
# Den Seed setzen
set_seed(42)
# Zufällige Daten generieren
x = torch.randn(3, 4)
print(x)
import random
import numpy as np
def set_seed(seed=42):
# Den PyTorch-Seed setzen
torch.manual_seed(seed)
# Den NumPy-Seed setzen
np.random.seed(seed)
# Python-Zufallsseed setzen
random.seed(seed)
# Guten CUDA-Determinismus sicherstellen (falls verwendet)
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False
# Den Seed setzen
set_seed(42)
# Zufällige Daten generieren
x = torch.randn(3, 4)
print(x)
Die Ausgabe ist:
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]])
Um die Reproduzierbarkeit vollständig zu garantieren, müssen Sie die Seeds von PyTorch, NumPy und Python random gleichzeitig setzen.
Andere Erweiterungen