np.random.seed(42)
torch.manual_seed(42)
random.seed(42)
这三行代码的作用是设置随机数种子,目的是保证程序运行时生成的随机数具有可重复性。具体解释如下:
-
np.random.seed(42)
- 为NumPy库的随机数生成器设置种子值为42
- 影响所有基于NumPy的随机操作(如
np.random.rand()
)
-
torch.manual_seed(42)
- 为PyTorch框架的随机数生成器设置种子
- 控制神经网络权重初始化、数据打乱等操作的随机性
-
random.seed(42)
- 为Python内置的random模块设置种子
- 影响
random.randint()
等基础随机函数
为什么用42?
这是一个常用示例值(源自《银河系漫游指南》),实际开发中可用任意整数。种子相同则每次运行生成的随机序列完全相同,这对以下场景至关重要:
- 科学实验的可复现性
- 机器学习模型训练的稳定性测试
- 调试随机性相关的程序错误
如果需要完全确定性结果,还需配合设置:
torch.backends.cudnn.deterministic = True # 保证CUDA卷积结果确定