zoukankan      html  css  js  c++  java
  • 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这个确实是个小坑,不光能加快速度,还可以大大减小内存开销。

    有几条小技巧分享一下:

    1. torch.backends.cudnn.benchmark = True 在程序刚开始加这条语句可以提升一点训练速度,没什么额外开销。我一般都会加有时候可能是因为每次迭代都会引入点临时变量,会导致训练速度越来越慢,基本呈线性增长。

    2.开发人员还不清楚原因,但如果周期性的使用torch.cuda.empty_cache()的话就可以解决这个问题。这个命令是清除没用的临时变量的。torchvision.transforms里的各种坑,等有空再说。

    作者:功长真金
    链接:https://www.zhihu.com/question/67209417/answer/303290223
    来源:知乎

  • 相关阅读:
    c语言中重要函数
    python 类属性、对象属性
    windows下PIP安装模块编码错误解决
    python爬取百思不得姐视频
    ubuntu下刷新dns
    pycharm设置安装python第三方插件
    python将str转换成字典
    pyqt加载图片
    Python端口扫描器
    自己构造用于异步请求的JSON数据
  • 原文地址:https://www.cnblogs.com/captain-dl/p/11938864.html
Copyright © 2011-2022 走看看