【pytorch】torch.backends.cudnn.deterministic

为什么使用相同的网络结构,跑出来的效果完全不同,用的学习率,迭代次数,batch size 都是一样?固定随机数种子是非常重要的。但是如果你使用的是PyTorch等框架,还要看一下框架的种子是否固定了。还有,如果你用了cuda,别忘了cuda的随机数种子。这里还需要用到torch.backends.cudnn.deterministic.

torch.backends.cudnn.deterministic是啥?顾名思义,将这个 flag 置为True的话,每次返回的卷积算法将是确定的,即默认算法。如果配合上设置 Torch 的随机种子为固定值的话,应该可以保证每次运行网络的时候相同输入的输出是固定的,代码大致这样:

def init_seeds(seed=0):
    torch.manual_seed(seed) # sets the seed for generating random numbers.
    torch.cuda.manual_seed(seed) # Sets the seed for generating random numbers for the current GPU. It’s safe to call this function if CUDA is not available; in that case, it is silently ignored.
    torch.cuda.manual_seed_all(seed) # Sets the seed for generating random numbers on all GPUs. It’s safe to call this function if CUDA is not available; in that case, it is silently ignored.

    if seed == 0:
        torch.backends.cudnn.deterministic = True
        torch.backends.cudnn.benchmark = False
  • 41
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
### 回答1: 在使用 Torch 库时,torch.backends.cudnn.deterministic 可以设置为 True,以保证在相同的输入下,相同的输出会被生成。这个设置在某些需要重复结果的场景下非常有用。 ### 回答2: torch.backends.cudnn.deterministic是一个PyTorch库中的设置。它用于控制是否应在使用CUDA进行加速时启用确定性算法。确定性算法是指在相同的输入情况下产生相同结果的算法。 在深度学习模型的训练过程中,通常会使用随机数生成器来初始化模型参数和打乱数据。然而,由于GPU加速并行计算的性质,当使用CUDA时,随机生成的结果可能会与CPU上的结果略有不同。这是因为GPU在计算时会对任务进行并行处理,而每个线程的执行顺序是不确定的,因此可能导致微小的差异。 torch.backends.cudnn.deterministic设置的目的就是为了在使用CUDA加速时获得确定性计算结果。当将该设置设置为True时,CUDA会在计算前给每个线程设置相同的随机种子,从而保证相同的输入会产生相同的输出。这种设置对于需要复现实验结果和结果验证非常重要。 但是需要注意的是,启用这个设置通常会导致一些性能上的损失,因为付出了额外的开销来保证结果的一致性。因此,在实际应用中需要根据具体情况权衡确定性和性能之间的关系。 总之,torch.backends.cudnn.deterministic是一个用于控制CUDA加速下是否启用确定性算法的设置。它能够确保相同的输入产生相同的输出,对于实验复现和结果验证非常有用,但可能会带来一定的性能损失。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Xhfei1224

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

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

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

打赏作者

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

抵扣说明:

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

余额充值