1、cudnn的简介

cuDNN(CUDA Deep Neural Network library):是NVIDIA打造的针对深度神经网络的加速库,是一个用于深层神经网络的GPU加速库。如果你要用GPU训练模型,cuDNN不是必须的,但是一般会采用这个加速库。

2、torch.backends.cudnn的理解

cuDNN使用非确定性算法,并且可以使用torch.backends.cudnn.enabled = False来进行禁用

如果设置为torch.backends.cudnn.enabled =True,说明设置为使用使用非确定性算法

然后再设置:

torch.backends.cudnn.benchmark = true

那么cuDNN使用的非确定性算法就会自动寻找最适合当前配置的高效算法,来达到优化运行效率的问题

一般来讲,应该遵循以下准则:

    1. 如果网络的输入数据维度或类型上变化不大,设置  torch.backends.cudnn.benchmark = true  可以增加运行效率;
    2. 如果网络的输入数据在每次 iteration 都变化的话,会导致 cnDNN 每次都会去寻找一遍最优配置,这样反而会降低运行效率。

所以我们经常看见在代码开始出两者同时设置:

torch.backends.cudnn.enabled = True
torch.backends.cudnn.benchmark = True

其他:torch.backends.cudnn.deterministic

一个布尔值,如果为 True,则导致 cuDNN 仅使用确定性卷积算法。

   torch.backends.cudnn.benchmark

一个布尔值,如果为 True,则导致 cuDNN 对多个卷积算法进行基准测试并选择最快的。

python中设置cudnn作用理解的更多相关文章

  1. python中对多态的理解

    目录 python中对多态的理解 一.多态 二.多态性 三.鸭子类型 python中对多态的理解 一.多态 多态是指一类事物有多种形态,比如动物类,可以有猫,狗,猪等等.(一个抽象类有多个子类,因而多 ...

  2. Python中__new__的作用

    __new__ 的作用 依照Python官方文档的说法,__new__方法主要是当你继承一些不可变的class时(比如int, str, tuple), 提供给你一个自定义这些类的实例化过程的途径.还 ...

  3. 对于Python中回调函数的理解

    关于回调函数,网上有很多说明和各种解释,多数在尝试用语言描述.我认为,如果对各个角色之间的关系不清楚,如果没有相关的编程需求,那么语言便非常无力,很难理解. 这是360百科的解释: 在计算机程序设计中 ...

  4. 对python中的__name__的理解

    一开始学习python的时候,不理解python中的__name__的用途,一致感觉__name__的返回结果就是__main__ 今天系统的看了一下,才理解过来,__name__真正的用处是用在使用 ...

  5. 对python中元类的理解

    1. 类也是对象 在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段.在Python中这一点仍然成立: >>> class ObjectCreator(object): ...

  6. 关于Python中迭代器的作用

    迭代器的定义:含有__iter__()方法和__next__()方法的就是迭代器,即(iterate) 含有__iter__()方法就可以使用for循环,即iterable(可迭代的) Iterabl ...

  7. Python中“if __name__=='__main__':”理解与总结

    1 引言 在Python当中,如果代码写得规范一些,通常会写上一句“if __name__==’__main__:”作为程序的入口,但似乎没有这么一句代码,程序也能正常运行.这句代码多余吗?原理又在哪 ...

  8. Python中的strip()的理解

    在看到Python中strip的时候产生了疑问 strip() 用于移除字符串头尾指定的字符(默认为空格) 开始测试: >>> s = 'ncy_123.python' >&g ...

  9. python中的 * 和 ** 作用含义

    python中的 * 和 ** ,能够让函数支持任意数量的参数,它们在函数定义和调用中,有着不同的目的 一. 打包参数 * 的作用:在函数定义中,收集所有位置参数到一个新的元组,并将整个元组赋值给变量 ...

  10. python 中is和== 的理解

    Python中的对象包含三要素:id.type.value其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值is判断的是a对象是否就是b对象,是通过id来判断的==判断的是a对 ...

随机推荐

  1. Windowns下Go环境搭建(含GoLand激活),并运行第一个Go程序

    As we all know, Go是一门注重简单.可靠.高效的编程语言.它比其他语言都简单,所以学起来更快. 在2007年,谷歌的搜索引擎出了一个问题.当谷歌工程师尝试调试新代码时,单单编译就数百万 ...

  2. FastAPI权限验证依赖项究竟藏着什么秘密?

    title: FastAPI权限验证依赖项究竟藏着什么秘密? date: 2025/06/12 06:53:53 updated: 2025/06/12 06:53:53 author: cmdrag ...

  3. 做思维导图?chatmoney轻轻松松拿下

    本文由 ChatMoney团队出品 嘿,各位职场朋友们 是不是常常对着密密麻麻的笔记感到焦虑呢? 想整理却无从下手? 别怕,ChatmoneyAI知识库来拯救你的整理困难症啦! 咱们都知道,思维导图是 ...

  4. Aug. 2023 普及组模拟赛 3

    题面 T1 最大生成树 Meaning 给定一个完全图,两点之间的边权为这两个点点权之差的绝对值,求这个图的最大生成树. Solution 对于最小生成树,我们可以考虑 Kruskal 算法. Kru ...

  5. C# ToolStripStatusLabel中没有 DataBindings

    https://social.msdn.microsoft.com/forums/windows/en-US/73de165c-e948-4015-bdcd-570f55a6e365/databind ...

  6. 485集线器 4口485集线器 4口485 HUB

    485集线器ZLAN9440是一款上海卓岚生产的可通过一路RS485/232主口扩展出4路RS485从口的工业级隔离型4口RS485集线器.可以有效的实现RS485网络的中继.扩展与隔离.ZLAN94 ...

  7. java--集合List、ArrayList、Linkedlist的应用

    Collection 迭代器的作用 迭代器的作用:就是用于抓取集合中的元素. 迭代的方法:toArray() .iterator() 迭代器的方法(一共就这3个): hasNext() 问是否有元素可 ...

  8. MathQuill

    前言 跟 MathJax.KaTex 不同,mathquill 是一个真正意义上的公式编辑器. 一边输入一边渲染,输出可以是 Tex,但是对于复杂的公式,这种输入方式还是有很大的局限性,输入过程还是需 ...

  9. GAMES 103 动画基础作业1 impulse 浅浅解析

    简介 impulse 简单而言就是脉冲. 脉冲就是, 在碰撞的时候给一个脉冲. 导致其速度和角速度改变. pipeline Q&A 简述Vi 和 ViNew Vi 就是碰撞点速度的均值 ViN ...

  10. QT editLine 无法输入的问题

    简介 不知道为什么就是无法输入,不过可以新建项目输入,但是不知道为什么 一个简单的解决方案. 切换输入法为如下图 image