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

你可能感兴趣的:(pytorch reproducibility)