设置随机数种子

def seed_everything(seed=1234):
    random.seed(seed)
    np.random.seed(seed)
    os.environ['PYTHONHASHSEED'] = str(seed)
    torch.manual_seed(seed)
    torch.cuda.manual_seed(seed)
    torch.backends.cudnn.deterministic = True

这段代码用于设置多个库的随机种子,以确保可重复性。在进行机器学习,特别是深度学习模型训练时,设置随机种子有助于确保每次运行时结果一致。

  1. random.seed(seed):
    设置 Python 内置 random 模块的随机种子,该模块用于生成随机数,如洗牌、采样等操作。这样可以确保使用该模块进行的随机操作是确定性的。

  2. np.random.seed(seed):
    设置 NumPy 的随机数生成器种子。NumPy 中的许多操作(如 np.random.randnp.random.randnnp.random.randint 等)都依赖于随机数生成器,因此设置该种子能确保这些操作在每次运行时产生相同的结果。

  3. os.environ['PYTHONHASHSEED'] = str(seed):
    设置 Python 哈希值的种子。默认情况下,Python 中的哈希值(如字典的键)在不同的会话或 Python 运行中可能会变化,这会导致非重复性。设置此环境变量可以强制 Python 在对象(如字典)中使用固定的哈希种子。

  4. torch.manual_seed(seed):
    设置 PyTorch CPU 随机数生成器的种子。这会影响所有涉及随机数生成的操作,如初始化模型权重或数据增强等。

  5. torch.cuda.manual_seed(seed):
    设置 PyTorch CUDA(GPU)随机数生成器的种子。如果使用 GPU,这行代码确保 GPU 上的操作也会有确定的随机数生成器。

  6. torch.backends.cudnn.deterministic = True:
    设置 cuDNN(一个针对 NVIDIA GPU 优化的深度学习库)使用确定性算法。当设置为 True 时,cuDNN 会确保像卷积操作这样的运算是可重复的。然而,确定性算法可能比非确定性算法效率较低,因此这可能会导致一些操作速度变慢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Billie使劲学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值