简述python&pytorch 随机种子的实现


Posted in Python onOctober 07, 2020

随机数广泛应用在科学研究, 但是计算机无法产生真正的随机数, 一般成为伪随机数. 它的产生过程: 给定一个随机种子(一个正整数), 根据随机算法和种子产生随机序列. 给定相同的随机种子, 计算机产生的随机数列是一样的(这也许是伪随机的原因).

随机种子是什么?

随机种子是针对随机方法而言的。

随机方法:常见的随机方法有 生成随机数,以及其他的像 随机排序 之类的,后者本质上也是基于生成随机数来实现的。在深度学习中,比较常用的随机方法的应用有:网络的随机初始化,训练集的随机打乱等。

随机种子的取值范围?

可以是任意数字,如10,1000

python random

下面以python的random函数为例, 做了一个测试.

简述python&pytorch 随机种子的实现

当用户未指定随机种子, 系统默认随机生成, 一般与系统当前时间有关.用户指定随机种子后, 使用随机函数产生的随机数可以复现.种子确定后, 每次使用随机函数相当于从随机序列去获取随机数, 每次获取的随机数是不同的.

pytorch

使用pytorch复现效果时, 总是无法做到完全的复现. 同一份代码运行两次, 有时结果差异很大. 这是由于算法中的随机性导致的. 要想每次获得的结果一致, 必须固定住随机种子. 首先, 我们需要找到算法在哪里使用了随机性, 再相应的固定住随机种子.

def seed_torch():
	seed = 1024 # 用户设定
 # seed = int(time.time()*256)
 # 保存随机种子
 with open('seed.txt', 'w') as f:
  f.write(str(seed))
 random.seed(seed)
 os.environ['PYTHONHASHSEED'] = str(seed)
 np.random.seed(seed)
 torch.manual_seed(seed)
 torch.cuda.manual_seed(seed)
 torch.cuda.manual_seed_all(seed)
 torch.backends.cudnn.benchmark = False
 torch.backends.cudnn.deterministic = True
seed_torch()

上面的代码固定了pytorch常用的随机种子, 但是如果你在预处理中涉及了随机性, 也需要固定住.

为了复现结果, 我们固定住了随机种子. 但pytorch训练模型时, 不同的随机种子会产生不同的结果. 每次使用固定的随机种子, 可能错失好的结果. 为此, 我们可以每次使用不一样的随机种子, 并保存下来

 到此这篇关于简述python&pytorch 随机种子的实现的文章就介绍到这了,更多相关pytorch 随机种子内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
使用Python的内建模块collections的教程
Apr 28 Python
python使用xlrd与xlwt对excel的读写和格式设定
Jan 21 Python
python和ruby,我选谁?
Sep 13 Python
Python和Java进行DES加密和解密的实例
Jan 09 Python
VSCode下好用的Python插件及配置
Apr 06 Python
python实现验证码识别功能
Jun 07 Python
python3+requests接口自动化session操作方法
Oct 13 Python
Python从数据库读取大量数据批量写入文件的方法
Dec 10 Python
python读取有密码的zip压缩文件实例
Feb 08 Python
python使用wxpy实现微信消息防撤回脚本
Apr 29 Python
Python实现一个数组除以一个数的例子
Jul 20 Python
python读取hdfs并返回dataframe教程
Jun 05 Python
详解基于python的全局与局部序列比对的实现(DNA)
Oct 07 #Python
python单元测试框架pytest的使用示例
Oct 07 #Python
利用python批量爬取百度任意类别的图片的实现方法
Oct 07 #Python
Python colormap库的安装和使用详情
Oct 06 #Python
Django-Scrapy生成后端json接口的方法示例
Oct 06 #Python
Python3如何使用range函数替代xrange函数
Oct 05 #Python
Python threading模块condition原理及运行流程详解
Oct 05 #Python
You might like
使用sockets:从新闻组中获取文章(一)
2006/10/09 PHP
PHP扩展CURL的用法详解
2014/06/20 PHP
PHP扩展程序实现守护进程
2015/04/16 PHP
PHP连接MYSQL数据库实例代码
2016/01/20 PHP
网页禁用右键实现代码(JavaScript代码)
2009/10/29 Javascript
JavaScript 在网页上单击鼠标的地方显示层及关闭层
2012/12/30 Javascript
json数据处理技巧(字段带空格、增加字段、排序等等)
2013/06/14 Javascript
jquery+CSS3模拟Path2.0动画菜单效果代码
2015/08/31 Javascript
原生js编写autoComplete插件
2016/04/13 Javascript
AngularJs bootstrap搭载前台框架——js控制部分
2016/09/01 Javascript
Angular通过angular-cli来搭建web前端项目的方法
2017/07/27 Javascript
vue中遇到的坑之变化检测问题(数组相关)
2017/10/13 Javascript
vue todo-list组件发布到npm上的方法
2018/04/04 Javascript
JS插件clipboard.js实现一键复制粘贴功能
2020/12/04 Javascript
使用pkg打包Node.js应用的方法步骤
2018/10/19 Javascript
vue  directive定义全局和局部指令及指令简写
2018/11/20 Javascript
使用taro开发微信小程序遇到的坑总结
2019/04/08 Javascript
搭建一个nodejs脚手架的方法步骤
2019/06/28 NodeJs
node解析修改nginx配置文件操作实例分析
2019/11/06 Javascript
JavaScript实现随机点名器
2020/03/25 Javascript
vue页面更新patch的实现示例
2020/03/25 Javascript
[02:40]DOTA2超级联赛专访430 从小就爱玩对抗性游戏
2013/06/18 DOTA
用Python代码来解图片迷宫的方法整理
2015/04/02 Python
Python中的元类编程入门指引
2015/04/15 Python
python集合用法实例分析
2015/05/30 Python
Python实现简易过滤删除数字的方法小结
2019/01/09 Python
化石印度尼西亚在线商店:Fossil Indonesia
2019/03/11 全球购物
New delete 与malloc free 的联系与区别
2013/02/04 面试题
Linux开机引导的步骤是什么
2015/10/19 面试题
学生会主席竞聘书
2014/03/31 职场文书
旅游安全协议书
2014/04/21 职场文书
同学会邀请函模板
2015/01/30 职场文书
2015学校师德师风工作总结
2015/04/22 职场文书
css3 filter属性的使用简介
2021/03/31 HTML / CSS
JavaScript嵌入百度地图API的最详细方法
2021/04/16 Javascript
golang为什么要统一错误处理
2022/04/03 Golang