Pytorch(6)-设置随机种子,复现模型结果

设置随机种子,复现模型结果

  • 1.Python本身的随机因素
  • 2.numpy随机因素
  • 3.pytorch随机因素

在很多情况下,我们希望能够复现实验的结果。为了消除程序中随机因素的影响,我们需要将随机数的种子固定下来。将所有带随机因素的种子全部固定下来后,多次执行同一代码将得到相同的结果。

在pytorch 模型运行时可能会涉及到三类随机因素:Python本身的随机因素,Numpy随机因素,pytorch随机因素。

没法清楚的知道代码涉及到那些随机因素的情况时有发生,为了以防万一,把所有可能的随机因素都禁止掉比较保险。

def set_rand_seed(seed=1):print("Random Seed: ", seed)random.seed(seed)np.random.seed(seed)torch.manual_seed(seed)torch.cuda.manual_seed(seed)torch.cuda.manual_seed_all(seed)# torch.backends.cudnn.enabled = False       torch.backends.cudnn.benchmark = Falsetorch.backends.cudnn.deterministic = True   # 保证每次返回得的卷积算法是确定的

1.Python本身的随机因素

random.seed(seed)

2.numpy随机因素

np.random.seed(seed)

3.pytorch随机因素

1.cpu随机种子

torch.manual_seed(seed)

2.GPU随机种子(with the latest pytorch 0.3 version you only need to set torch.manual_seed which will seed all devices)

torch.cuda.manual_seed(seed)
torch.cuda.manual_seed_all(seed)

3.cuDNN 是英伟达专门为深度神经网络所开发出来的 GPU 加速库,针对卷积、池化等等常见操作做了非常多的底层优化,比一般的 GPU 程序要快很多。在使用 GPU 的时候,PyTorch 会默认使用 cuDNN 加速。但是使用cuDNN 加速时,torch.backends.cudnn.benchmark 模式是为 False。

cuDNN 对网络进行优化通过torch.backends.cudnn.benchmark 模式选择不同版本的优化算法。但是这些优化算法有些是非确定性的,所以会导致结果的随机性。所以需要orch.backends.cudnn.deterministic = True,选择默认的优化方式,使得结果可以复现。

torch.backends.cudnn.benchmark = False
torch.backends.cudnn.deterministic = True

如果不是很清楚默认情况下的torch.backends.cudnn.benchmark值,还是显式设置为 False 比较保险

demo1: 结果随机

torch.backends.cudnn.benchmark = True
torch.backends.cudnn.deterministic = True

demo2:结果可复现

torch.backends.cudnn.benchmark = False
torch.backends.cudnn.deterministic = True

demo3: 直接禁用cudnn,结果可复现

torch.backends.cudnn.enabled = False

4.数据导入num_workers = 0

def _init_fn():np.random.seed(manualSeed)DataLoding = data.DataLoader(..., batch_size = ..., collate_fn = ..., num_workers =0shuffle = ..., pin_memory = ...,worker_init_fn=np.random.seed(1)

参考博文:
Random seed initialization:https://discuss.pytorch.org/t/random-seed-initialization/7854/17

torch.backends.cudnn.benchmark ?!:https://zhuanlan.zhihu.com/p/73711222

pytorch torch.backends.cudnn设置作用:

https://www.cnblogs.com/wanghui-garcia/p/11514502.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/445174.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何让自己学习?

阶段性反馈机制(如何持之以恒、让自己发疯) 反馈机制是王者荣耀的核心武器,击杀野怪获得金币,不断地努力,获得奖励是我们不断的玩这个游戏的主要原因,也是人的本能,我什么都得不到凭什么这么做&…

追女孩子必备

当然,首先要知道女孩子的手机号码。 其次,要对她有兴趣啦。 发个短信:“上次跟你聊天很愉快,能否再次邀你出来聊聊天?” 注意:女孩子答应的话,要找的地点是个比较清静的酒吧,暂时别去…

python中使用“if __name__ == '__main__'”语句的作用

首先用最简洁的语言来说明一下 if __name__ __main__: 的作用:防止在被其他文件导入时显示多余的程序主体部分。 先举个例子,如果不用if __name__ __main__: 会发生什么事: 首先在yy.py中调用cs.py #yy.pyimport csprint(引用cs)cs.cs()p…

bishi

鄙视 2011-04-26 20:43:02| 分类:默认分类 |字号订阅腾讯笔试题:const的含义及实现机制 const的含义及实现机制,比如:const int i,是怎么做到i只可读的? const用来说明所定义的变量是只读的。 这些在编译期间完成&…

NLP复习资料(1)-绪论、数学基础

NLP复习资料-绪论、数学基础1.绪论2.数学基础2.1信息论基础:2.2应用实例:词汇消歧国科大,宗老师《自然语言处理》课程复习笔记,个人整理,仅供参考。1.绪论 1. 语言学、计算语言学、自然语言理解、自然语言…

redis——sentinel

什么是哨兵机制 Redis的哨兵(sentinel) 系统用于管理/多个 Redis 服务器,该系统执行以下三个任务: 监控: 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。 提醒:当被监控的某个 Redis出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他…

珍藏

http://www.cnblogs.com/leoo2sk/archive/2011/04/19/nginx-module-develop-guide.html http://ldl.wisplus.net/page/6/

FM,FFM及其实现

在推荐系统和计算广告业务中,点击率CTR(click-through rate)和转化率CVR(conversion rate)是衡量流量转化的两个关键指标。准确的估计CTR、CVR对于提高流量的价值,增加广告及电商收入有重要的指导作用。业界…

linux-在cenos上安装大全(nginx/JRE/maven/Tomcat/MYSQL/redis/kafka/es...)

云服务器 阿里云 腾讯云 七牛云 百度云 天翼云 华为云 西部数码 自己购买一个,学生和企业用户都有优惠的。 putty 自己下载一个putty,用来操作云服务器。 putty.org 一路下一步就ok。 点击putty.exe,输入你的ip或域名 最好改成20&#xff1…

NLP复习资料(2)-三~五章:形式语言、语料库、语言模型

NLP复习资料-三~五章1.第三章:形式语言2.第四章:语料库3.第五章:语言模型国科大,宗老师《自然语言处理》课程复习笔记,个人整理,仅供参考。1.第三章:形式语言 1.语言描述的三种途径&#xff1a…

存储管理的页面置换算法

存储管理的页面置换算法 存储管理的页面置换算法在考试中常常会考到,操作系统教材中主要介绍了3种常用的页面置换算法,分别是:先进先出法(FIFO)、最佳置换法(OPT)和最近最少使用置换法&#xff…

KKT条件初步理解

最近学习的时候用到了最优化理论,但是我没有多少这方面的理论基础。于是翻了很多大神的博客把容易理解的内容记载到这篇博客中。因此这是篇汇总博客,不算是全部原创,但是基础理论,应该也都差不多吧。因才疏学浅,有纰漏…

NLP复习资料(3)-六~七章:马尔科夫模型与条件随机场、词法分析与词性标注

NLP复习资料1.第六章 马尔科夫模型与条件随机场2.第七章 词法分析与词性标注国科大,宗老师《自然语言处理》课程复习笔记,个人整理,仅供参考。1.第六章 马尔科夫模型与条件随机场 1.马尔科夫模型:P6系统每一时刻的状态只与前一个…

redis——实战点赞

点赞功能随处可见,我们都知道点赞是一个非常高频的操作,redis就非常适合做这种工作。 实现效果: 分析:三种类型:给帖子点赞,给评论点赞,给回复点赞 我们只实现查看点赞数量的话,只…

network

1.网络结构 在OSI参考模型中,物理层的作用是透明的传输比特流。对等实体在一次交互作用中传送的信息单位称为协议数据单元,它包括控制信息和用户数据两部分。上下层实体之间的接口称为服务访问点(SAP),网络层的服务访问点也称为网络地址&…

NLP复习资料(4)-第八章 句法分析

NLP复习资料-第八章国科大,宗老师《自然语言处理》课程复习笔记,个人整理,仅供参考。第八章:语法理论(第三章的后续) 1.出发点chomsky的四类文法过于泛化,生成能力太强了,会生成没有…

大数据学习(10)--流计算

文章目录目录1.流计算的概述1.1 什么是流数据?1.2 批量计算和实时计算1.3 流计算的概念1.4 流计算和Hadoop1.5 流计算框架2.流计算的处理流程2.1 流计算处理基本概念2.2 数数据的实时获取2.3 数据的实时计算2.4 实时查询任务3.流计算的应用和开源框架Strom3.1 流计算…

network---written test

1、OSI(Open System Interconnect):开放系统互联,是一个七层的计算机网络模型,分别为:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。 TCP/IP(Transmission Control Protocol/…

redis——实战关注

效果: 思路:很好想,把自己的粉丝和自己关注的人都存起来(set即可),做增删改查。 package com.now.community.community.service;import com.now.community.community.entity.User; import com.now.commun…

NLP复习资料(5)-第九章 句法分析

NLP复习资料-第九章1.短语结构分析2.短语结构分析方法的评估指标3依存句法分析器设计P134依存句法分析器性能评价5短语结构与依存结构能够相互转换6汉英句法结构对比7汉语长句的层次化句法分析国科大,宗老师《自然语言处理》课程复习笔记,个人整理&#…