python中设置cudnn作用理解
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使用的非确定性算法就会自动寻找最适合当前配置的高效算法,来达到优化运行效率的问题
一般来讲,应该遵循以下准则:
- 如果网络的输入数据维度或类型上变化不大,设置 torch.backends.cudnn.benchmark = true 可以增加运行效率;
- 如果网络的输入数据在每次 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作用理解的更多相关文章
- python中对多态的理解
目录 python中对多态的理解 一.多态 二.多态性 三.鸭子类型 python中对多态的理解 一.多态 多态是指一类事物有多种形态,比如动物类,可以有猫,狗,猪等等.(一个抽象类有多个子类,因而多 ...
- Python中__new__的作用
__new__ 的作用 依照Python官方文档的说法,__new__方法主要是当你继承一些不可变的class时(比如int, str, tuple), 提供给你一个自定义这些类的实例化过程的途径.还 ...
- 对于Python中回调函数的理解
关于回调函数,网上有很多说明和各种解释,多数在尝试用语言描述.我认为,如果对各个角色之间的关系不清楚,如果没有相关的编程需求,那么语言便非常无力,很难理解. 这是360百科的解释: 在计算机程序设计中 ...
- 对python中的__name__的理解
一开始学习python的时候,不理解python中的__name__的用途,一致感觉__name__的返回结果就是__main__ 今天系统的看了一下,才理解过来,__name__真正的用处是用在使用 ...
- 对python中元类的理解
1. 类也是对象 在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段.在Python中这一点仍然成立: >>> class ObjectCreator(object): ...
- 关于Python中迭代器的作用
迭代器的定义:含有__iter__()方法和__next__()方法的就是迭代器,即(iterate) 含有__iter__()方法就可以使用for循环,即iterable(可迭代的) Iterabl ...
- Python中“if __name__=='__main__':”理解与总结
1 引言 在Python当中,如果代码写得规范一些,通常会写上一句“if __name__==’__main__:”作为程序的入口,但似乎没有这么一句代码,程序也能正常运行.这句代码多余吗?原理又在哪 ...
- Python中的strip()的理解
在看到Python中strip的时候产生了疑问 strip() 用于移除字符串头尾指定的字符(默认为空格) 开始测试: >>> s = 'ncy_123.python' >&g ...
- python中的 * 和 ** 作用含义
python中的 * 和 ** ,能够让函数支持任意数量的参数,它们在函数定义和调用中,有着不同的目的 一. 打包参数 * 的作用:在函数定义中,收集所有位置参数到一个新的元组,并将整个元组赋值给变量 ...
- python 中is和== 的理解
Python中的对象包含三要素:id.type.value其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值is判断的是a对象是否就是b对象,是通过id来判断的==判断的是a对 ...
随机推荐
- kubernetes集群calico网络组件部署
一.使用问题背景 关于Calico组件介绍,我们在这个章节已经介绍过. 这里使用Calico组件,是因为集团安全测试通过容器内部检测出内网主机暴露的端口,内网主机的端口暴漏会造成严重的安全风险. 扫描 ...
- javacv添加字幕 剧中显示
介绍 javacv目前不能像ffmpeg那样 直接加载字体文件到视频 参考这里 所以实现流程为:提取帧 -> 转图片 -> 编辑图片增加文字 -> 转回帧 -> 输出视频 上代 ...
- 【深入理解Spring AOP】核心原理与代理机制详解
深入理解Spring AOP:核心原理与代理机制详解 引言 在现代Java开发中,面向切面编程(AOP)已经成为解决横切关注点的主流方案.作为Spring框架的核心模块之一,Spring AOP通过代 ...
- Elasticsearch+logstash安装部署
ELK安装部署 ELK安装部署 ELK是elastic公司提供的一套完整的收集日志并分析展示的产品,分别表示Elasticsearch.Logstash和kibana. Elasticsearch简称 ...
- [CSP-S 2022] 数据传输
link 题外话:考场写了个 \(3^3\) 巨大多恶心的分讨倍增写吐了,不仅没调出来还导致没时间仔细考虑 T1 T3 的 bug,感谢这题送我退役. 对于 \(K=1\),相当于树上路径点权和. 对 ...
- java--Hibernate关联映射
hibernate 程序执行流程 集合映射 User.java public class User { private int userId; private String userName; // ...
- java clone 建立一个深拷贝
简介 clone 建立 深拷贝 code 核心代码 public Employee clone() throws CloneNotSupportedException{ Employee cloned ...
- 微服务架构PaaS平台,iPaaS平台支撑底座
RestCloud所有产品均基于本微服务架构PaaS平台研发而来,底层PaaS平台是RestCloud所有产品的技术底座,基于本技术底座RestCloud快速研发了所有产品线,通过不断迭代PaaS平台 ...
- ETL结合飞书快速实现业务信息同步
一.ETL工具介绍 ETLCloud数据集成平台是一款针对IT以及数据工程师推出的全域数据集成平台产品.它是集实时数据集成和离线数据集成以及API发布为一体的数据集成平台.与其他开源数据集成工具相比, ...
- STM32hal库FreeRTOS移植笔记
进入FreeRTOS官网下载FreeRTOS源码,其中LTS指的是长期支持版本 在文件夹中解压并打开,其中FreeRTOS-Kernel是FreeRTO核心组件 在FreeRTOS-Kernel中我们 ...