利用随机数种子来使pytorch中的结果可以复现

 

在神经网络中,参数默认是进行随机初始化的。不同的初始化参数往往会导致不同的结果,当得到比较好的结果时我们通常希望这个结果是可以复现的,在pytorch中,通过设置随机数种子也可以达到这么目的。

在百度如何设置随机数种子时,搜到的方法通常是:

SEED = 0
torch.manual_seed(SEED)
torch.cuda.manual_seed(SEED)

自己在按照这种方法尝试后进行两次训练所得到的loss和误差都不同,结果并没有复现。

也搜过一些方法,比如设置参数:

torch.backends.cudnn.deterministic = True

但是在自己的网络中这样设置并没有用,依然得到不同的结果。

后面偶然在google中搜到有人在设置随机数种子时还加上了np.random.seed(SEED),经过尝试后发现结果是可复现的了。

你可能感兴趣的:(开发)