产生互不相同的随机数_设置随机数种子实现pytorch实验的复现

72b17846b4ddc23f2dc075b594484491.png

https://pytorch.org/docs/stable/notes/randomness.html
不同的卡,不同平台 不能保证实验结果可重现,即使是相同的随机数种子

为了保证实验结果的确定性,需要采取几个步骤:

PyTorch中涉及两个伪随机数生成器,您需要手动设置随机数种子以使运行可重现。此外,您应该确保您的代码依赖于使用随机数的所有其他库也使用固定种子。

PyTorch

import torch
torch.manual_seed(0)

有一些PyTorch函数使用CUDA函数,这些函数可能是非确定性的来源。一类这样的CUDA函数是原子操作,特别是atomicAdd,其中对于相同值的并行加法的顺序是未确定的,并且对于浮点变量,是结果中的变化源。在前向中使用atomicAdd的PyTorch函数包括,。

许多操作具有向后使用atomicAdd,特别是许多形式的池,填充和采样。目前没有简单的方法来避免这些功能中的非确定性。

CuDNN

在CuDNN后端运行时,必须设置另外两个选项:

torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False

确定性模式可能会对性能产生影响,具体取决于型号

NumPy

import numpy as np
np.random.seed(0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值