转载请注明作者和出处: http://blog.csdn.net/john_bh/
在神经网络中,参数默认是进行随机初始化的。不同的初始化参数往往会导致不同的结果。当得到比较好的结果时我们通常希望这个结果是可以复现的,在PyTorch中,通过设置全局随机数种子可以实现这个目的。本文总结了PyTorch中固定随机种子的方法。
1. 训练过程
在训练过程中,若相同的数据数据集,相同的训练集、测试集划分方式,相同的权重初始化,但是每次训练结果不同,可能有以下几个原因:
- Dropout的存在 ;
- PyTorch、Python、Numpy中的随机种子没有固定;
- 数据预处理、增强方式采用了概率,若没有设置固定的随机种子,结果可能不同。例如常用数据增强库albumentations就采用了Python的随机产生器;
- 训练数据集被随机打乱了顺序;
- 向上采样和插值函数/类的向后是不确定的(PyTorch的问题)
举个例子:
import numpy as np
def no_set_seed():
n = 0
while (n < 3):
n += 1
print(np.random.random())
def set_seed():
n = 0
while (n < 3):
np.random.seed(5)
n += 1
print(np.random.random(

本文详细介绍了在PyTorch中如何固定随机种子以确保实验结果的可复现性,包括训练和测试过程中的注意事项,以及代码实现方法。

1971

被折叠的 条评论
为什么被折叠?



