【转载】 pytorch reproducibility —— pytorch代码的可复现性

原文地址:

https://www.jianshu.com/p/96767683beb6

作者:kelseyh
来源:简书 

=====================================================

在训练seq2seq的过程中,固定了所有seed,

random.seed(args.seed)

os.environ['PYTHONHASHSEED'] =str(args.seed)

np.random.seed(args.seed)

torch.manual_seed(args.seed)

torch.cuda.manual_seed(args.seed)

torch.cuda.manual_seed_all(args.seed)

torch.backends.cudnn.deterministic =True




训练的loss,前100是一模一样的,但是100开始会慢慢出现小数点后几位的不同。

原来是decoder端在使用copy机制的时候用了torch.Tensor.scatter_add_()导致的。

目前这个方法在GPU上使用时带来的随机性没法儿避免。

https://pytorch.org/docs/stable/notes/randomness.html

=====================================================

本博客是博主个人学习时的一些记录,不保证是为原创,个别文章加入了转载的源地址还有个别文章是汇总网上多份资料所成,在这之中也必有疏漏未加标注者,如有侵权请与博主联系。
原文地址:https://www.cnblogs.com/devilmaycry812839668/p/14693224.html