PyTorch随机种子的设置

随机数

随机数是专门的随机实验结果,其特点在于产生的后面那个数与前一个数是没有联系的。真正的随机数是利用物理现象产生的,比如掷钱币、骰子、转轮等,产生随机数的方法统称为随机数发生器。

伪随机数

伪随机数其实是具有一定的规律性的,它是由计算机使用算法模拟出来的,但由于其产生的算法相对来说较为复杂,规律周期较长,并不容易查找出其规律。

随机种子

随机种子是相对于随机方法而言,随机方法常见的有生成随机数,随机排序等。在深度学习中,常用的随机方法有网络的随机初始化,训练集的随机打乱。在深度学习中的随机种子是属于伪随机数,由随机数算法生成一种均匀分布且难以预测的序列

设置随机种子意义及弊端

意义: 在其他超参和网络等各项参数不变的情况下,在PyTorch中预先设置好随机种子后,可以保证多次运行此段代码能够得到完全一样的结果,此举保证了结果的可复现性

弊端: 确定性操作通常比非确定性操作慢,因此模型的单次运行性能可能会降低。但是,确定随机种子可以通过促进试验、调试和回归测试来节省开发时间。

设置随机种子方法

1
2
3
4
5
6
7
8
9
10
import torch
import random
import numpy as np

def setup_seed(seed): # 1314 3407
random.seed(seed)
np.random.seed(seed)
torch.manual_seed(seed)
torch.cuda.manual_seed_all(seed)
torch.backends.cudnn.deterministic = True

参考资料

pytorch设置随机种子

Python 随机种子介绍,PyTorch 中随机种子的设置与应用

深度学习--随机种子

PyTorch Reproducibility