torch.backends.cudnn.benchmark=True or False?

torch.backends.cudnn.benchmark

在训练DL model的时候,pytrorch框架中会经常使用cudnn.benchmark=Ture来加速网络的训练,那为什么pytorch官方不设置默认开启而是需要人为手动开启呢?

个人理解

设置torch.backends.cudnn.benchmark=True 会让网络在开始之前花费一点额外的时间,为整个网络的每个卷积层搜索最适合的卷积实现算法,进而实现网络的加速。适用于网络结构固定的(NAS就不适用了!!),这是因为实现神经网络中卷积、池化有很多种实现方法,最简单地方法去实现卷积操作肯定是堆叠for了,但是这种过于无脑,时间复杂度太高了,据不完全统计实现卷积的方法有80余种!!!

Pytorch太强了

在网络训练之前,就先测试那种卷积实现方法最快最适合当前设备,决定好每层最快的算法之后,再运行整个网络,这样的效率就会提升很多很多!但是前提得是,网络结构固定!!!不然就像NAS一直频繁变换网络结构,导致torch一直在找最优的卷积实现方法,得不偿失!这就是为什么要人为手动开启了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

liiiiiiiiiiiiike

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

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

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

打赏作者

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

抵扣说明:

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

余额充值