Pytorch学习0.01:cudnn.benchmark= True的设置
设置这个 flag 可以让内置的 cuDNN 的 auto-tuner 自动寻找最适合当前配置的高效算法,来达到优化运行效率的问题。 应该遵循以下准则: 如果网络的输入数据维度或类型上变化不大,也就是每次训练的图像尺寸都是一样的时候,设置 torch.backends.cudnn.benchmark = true 可以增加运行效率; 如果网络的输入数据在每次 iteration 都变化的话,会导致 cnDNN 每次都会去寻找一遍最优配置,这样反而会降低运行效率。 torch.backends.cudnn.benchmark = true 不知道为什么好多人写dropout和batchnormalization,这个只要稍微理解他们的原理就明白肯定要对train的值进行判断的,train值的功能目前也仅限于这两个层,对于别的层来说,train(True)和train(False)是没有任何区别的。而输入变量的volatile这个确实是个小坑,不光能加快速度,还可以大大减小内存开销。 有几条小技巧分享一下: torch.backends.cudnn.benchmark = True 在程序刚开始加这条语句可以提升一点训练速度,没什么额外开销。我一般都会加有时候可能是因为每次迭代都会引入点临时变量,会导致训练速度越来越慢,基本呈线性增长。 2.开发人员还不清楚原因