Random seed(随机种子) 是在生成随机数时使用的起始点。它用于控制随机数生成器产生随机数的序列。设置了随机种子后,每次生成的随机数序列将是确定性的,这意味着可以在不同的运行中获得相同的随机数序列,从而使实验可复现。
在机器学习中,确保实验的可复现性是至关重要的,因为它允许其他人重现你的结果并验证你的研究成果。如果不设置随机种子,每次运行程序时生成的随机数都会发生改变,这将导致结果的不可复现性。
在Python中,随机种子是通过random.seed()函数设置的,而在PyTorch中,可以通过设置torch.manual_seed()来实现,在TensorFlow中,使用tf.random.set_seed()设置
下面是两种场景下设置随机种子的示例:
1 2 3 4 5 6 7 8 9
| import random
random.seed(123)
for _ in range(5): print(random.random())
|
在这个例子中,我们设置了随机种子为 123,然后生成了 5 个随机数。如果你再次运行上面的代码,你会发现每次生成的随机数序列都是相同的。
场景2)在使用 PyTorch 训练时:
在 PyTorch 中,可以使用 torch.manual_seed() 来设置随机种子。下面是一个具体的使用案例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| import torch
torch.manual_seed(123)
random_tensor_1 = torch.rand(3, 3) print("第一次随机数生成结果:") print(random_tensor_1)
random_tensor_2 = torch.rand(3, 3) random_tensor_2
torch.manual_seed(456)
random_tensor_3 = torch.rand(3, 3) print("\n第三次随机数生成结果:") print(random_tensor_3)
|
其他设置代码汇总:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import torch import random import tensorflow as tf import numpy as np
seed = 42
np.random.seed(seed) random.seed(seed)
tf.random.set_seed(seed)
torch.manual_seed(seed) torch.cuda.manual_seed(seed) torch.cuda.manual_seed_all(seed) torch.backends.cudnn.deterministic = True torch.backends.cudnn.benchmark = False
|
https://blog.csdn.net/WHYbeHERE/article/details/133930263