简述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获取局域网占带宽最大3个ip的方法
Jul 09 Python
python 简单的多线程链接实现代码
Aug 28 Python
python实现多进程代码示例
Oct 31 Python
使用Python横向合并excel文件的实例
Dec 11 Python
对python中大文件的导入与导出方法详解
Dec 28 Python
Python实现平行坐标图的两种方法小结
Jul 04 Python
使用Python实现图像标记点的坐标输出功能
Aug 14 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
Oct 11 Python
Python实现计算长方形面积(带参数函数demo)
Jan 18 Python
Pyecharts地图显示不完成问题解决方案
May 11 Python
浅谈Python 参数与变量
Jun 20 Python
用60行代码实现Python自动抢微信红包
Feb 04 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
PHP读写文件的方法(生成HTML)
2006/11/27 PHP
PHP取进制余数函数代码
2012/01/19 PHP
奉献出一个封装的curl函数 便于调用(抓数据专用)
2013/07/22 PHP
php文件操作之小型留言本实例
2015/06/20 PHP
在Windows系统下使用PHP生成Word文档的教程
2015/07/03 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
解密效果
2006/06/23 Javascript
Ext 表单布局实例代码
2009/04/30 Javascript
jQuery 表单验证插件formValidation实现个性化错误提示
2009/06/23 Javascript
JavaScript 浮点数运算 精度问题
2009/10/06 Javascript
JQuery slideshow的一个小问题(如何发现及解决过程)
2013/02/06 Javascript
如何获取select下拉框的值(option没有及有value属性)
2013/11/08 Javascript
JavaScript italics方法入门实例(把字符串显示为斜体)
2014/10/17 Javascript
Windows系统中安装nodejs图文教程
2015/02/28 NodeJs
JavaScript中判断函数、变量是否存在
2015/06/10 Javascript
js制作网站首页图片轮播特效代码
2016/08/30 Javascript
Javascript单例模式的介绍和实例
2016/10/08 Javascript
微信小程序 require机制详解及实例代码
2016/12/14 Javascript
使用JavaScript判断用户输入的是否为正整数(两种方法)
2017/02/05 Javascript
详解Angular 4.x NgIf 的用法
2017/05/22 Javascript
Vue中之nextTick函数源码分析详解
2017/10/17 Javascript
Bootstrap-table自定义可编辑每页显示记录数
2018/09/07 Javascript
Vue 实现分页与输入框关键字筛选功能
2020/01/02 Javascript
Vue 技巧之控制父类的 slot
2020/02/24 Javascript
[03:48]DOTA2完美大师赛主赛事第二日精彩集锦
2017/11/24 DOTA
[51:53]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第二场 1月24日
2021/03/11 DOTA
Python实现爬取逐浪小说的方法
2015/07/07 Python
python OpenCV学习笔记实现二维直方图
2018/02/08 Python
python机器人运动范围问题的解答
2019/04/29 Python
django框架model orM使用字典作为参数,保存数据的方法分析
2019/06/24 Python
centos7之Python3.74安装教程
2019/08/15 Python
Python绘制股票移动均线的实例
2019/08/24 Python
英国购买威士忌网站:Master of Malt
2019/09/26 全球购物
银行见习期自我鉴定
2014/01/29 职场文书
毕业证明书
2015/06/19 职场文书
志愿者服务宣传标语口号
2015/12/26 职场文书