torch.backends.cudnn.benchmark有什么用?

本文介绍如何通过设置torch.backends.cudnn.benchmark为True来提高PyTorch中卷积神经网络的训练效率。该设置允许PyTorch针对固定的网络模型和输入参数选择最优的卷积实现方式。
摘要由CSDN通过智能技术生成

torch.backends.cudnn.benchmark有什么用?

针对网络模型固定输入参数固定的场景,将上述变量设置为True可以增加训练效率。

cuDNN是英伟达为深度神经网络(DNN)设计的GPU加速库,针对卷积等操作进行了很多优化,Pytorch等深度学习框架会使用cuDNN加速。

卷积有多种实现方式,每种卷积算法都有特定的优势。一种简单的优化方式是针对神经网络中不同的层使用不同的卷积实现方式。决定了每层最快的实现方式后,在运行整个网络就会提升算法效率。

将上面的值设置为True,Pytorch就会针对模型的卷积层进行预先的优化,即针对每一层卷积都寻找最快的实现算法,进而提升整体效率。如此,便可在模型启动的时候额外增加一点预处理时间,而大幅度减少整体训练时间。

影响卷积运算速度的因素有

  1. 卷积层本身的参数,如卷积核尺寸,步长,填充,输出通道个数。
  2. 输入的参数,如输入的通道数,宽,高等

因此如果上面影响卷积速度的参数频繁的变化,则将torch.backends.cudnn.benchmark设置为True就不是明智的选择。因为在每次变化之后,算法都会重新预处理,预处理如果做太多次,也是很浪费时间的。
大部分的卷积神经网络的模型卷积层参数和输入参数都是固定的,因此可以利用上述方式提高效率。

代码加在哪里?

torch.backends.cudnn.benchmark=True
这行代码加在开头就好

参考

https://zhuanlan.zhihu.com/p/161534171

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值