pytorch reproducibility

在训练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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容