PyTorch torch.manual_seed 関数
torch.manual_seedPyTorch で乱数生成器のシードを設定するための関数です。シードを設定することで、結果の再現性を保証できます。
これは実験結果の再現性を保証する必要がある場合に非常に重要です。例えば、デバッグや論文の再現などのシーンです。
関数定義
torch.manual_seed(seed)
パラメータ:
seed(int): 乱数シード。
戻り値:
無し
使用例
例1: シードを設定して再現性を保証する
例
import torch
# 乱数シードを設定
torch.manual_seed(42)
# 毎回生成される乱数は同じ
x = torch.randn(3)
print("1回目:", x)
# 同じシードを再設定
torch.manual_seed(42)
y = torch.randn(3)
print("2回目:", y)
print("結果は同じ:", torch.equal(x, y))
# 乱数シードを設定
torch.manual_seed(42)
# 毎回生成される乱数は同じ
x = torch.randn(3)
print("1回目:", x)
# 同じシードを再設定
torch.manual_seed(42)
y = torch.randn(3)
print("2回目:", y)
print("結果は同じ:", torch.equal(x, y))
出力結果は次のとおりです:
第一次: tensor([ 0.3367, 0.1288, 0.2345]) 第二次: tensor([ 0.3367, 0.1288, 0.2345]) 结果相同: True
例2: 完全再現可能なトレーニング
例
import torch
import random
import numpy as np
def set_seed(seed=42):
# PyTorch のシードを設定
torch.manual_seed(seed)
# NumPy のシードを設定
np.random.seed(seed)
# Python random のシードを設定
random.seed(seed)
# CUDA の決定性を確保(使用する場合)
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False
# シードを設定
set_seed(42)
# ランダムデータを生成
x = torch.randn(3, 4)
print(x)
import random
import numpy as np
def set_seed(seed=42):
# PyTorch のシードを設定
torch.manual_seed(seed)
# NumPy のシードを設定
np.random.seed(seed)
# Python random のシードを設定
random.seed(seed)
# CUDA の決定性を確保(使用する場合)
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False
# シードを設定
set_seed(42)
# ランダムデータを生成
x = torch.randn(3, 4)
print(x)
出力結果は次のとおりです:
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]])
完全な再現性を保証するには、PyTorch、NumPy、Python random のシードを同時に設定する必要があります。
その他の拡張