torch.backends.cudnn.benchmark和torch.backends.cudnn.deterministic解读

torch.backends.cudnn.benchmark

简介:总的来说,大部分情况下,设置这个 flag 可以让内置的 cuDNN 的 auto-tuner 自动寻找最适合当前配置的高效算法,来达到优化运行效率的问题。
一般来讲,应该遵循以下准则:
如果网络的输入数据维度(包括 batch size,图片大小,输入的通道)或类型上变化不大,设置 torch.backends.cudnn.benchmark = true 可以增加运行效率;
如果网络的输入数据在每次 iteration 都变化的话,会导致 cnDNN 每次都会去寻找一遍最优配置,这样反而会降低运行效率。

torch.backends.cudnn.deterministic

torch.backends.cudnn.deterministic=True

将这个 flag 置为True的话,每次返回的卷积算法将是确定的,即默认算法。
如果配合上设置 Torch 的随机种子为固定值的话,应该可以保证每次运行网络的时候相同输入的输出是固定的。

args.seed = 2021
random.seed(args.seed)
np.random.seed(args.seed)
torch.manual_seed(args.seed)
torch.cuda.manual_seed(args.seed)
torch.backends.cudnn.deterministic=True

参考链接

https://blog.csdn.net/zxyhhjs2017/article/details/91348108
https://zhuanlan.zhihu.com/p/73711222?utm_source=wechat_session

你可能感兴趣的:(pytorch日常积累,深度学习,pytorch,深度学习)