简述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 multiprocessing模块中的Pipe管道使用实例
Apr 11 Python
Python原始字符串与Unicode字符串操作符用法实例分析
Jul 22 Python
python中for循环输出列表索引与对应的值方法
Nov 07 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
Dec 19 Python
python 处理数字,把大于上限的数字置零实现方法
Jan 28 Python
详解Python的循环结构知识点
May 20 Python
Django认证系统实现的web页面实现代码
Aug 12 Python
利用pyshp包给shapefile文件添加字段的实例
Dec 06 Python
PyTorch 随机数生成占用 CPU 过高的解决方法
Jan 13 Python
Python中的Cookie模块如何使用
Jun 04 Python
Python基于staticmethod装饰器标示静态方法
Oct 17 Python
Python利用matplotlib绘制折线图的新手教程
Nov 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
实现php加速的eAccelerator dll支持文件打包下载
2007/09/30 PHP
Linux下 php5 MySQL5 Apache2 phpMyAdmin ZendOptimizer安装与配置[图文]
2008/11/18 PHP
PHP中的Streams详细介绍
2014/11/12 PHP
了解PHP的返回引用和局部静态变量
2015/06/04 PHP
PHP获取数组中单列值的方法
2017/06/10 PHP
PHP 枚举类型的管理与设计知识点总结
2020/02/13 PHP
HR vs CL BO3 第一场 2.13
2021/03/10 DOTA
JavaScript对象链式操作代码(jquery)
2010/07/04 Javascript
JavaScript中关于indexOf的使用方法与问题小结
2010/08/05 Javascript
js将iframe中控件的值传到主页面控件中的实现方法
2013/03/11 Javascript
使用js实现一个可编辑的select下拉列表
2014/02/20 Javascript
javascript的解析执行顺序在各个浏览器中的不同
2014/03/17 Javascript
jQuery实现级联菜单效果(仿淘宝首页菜单动画)
2014/04/10 Javascript
改变状态栏文字的js代码
2014/06/13 Javascript
onclick和onblur冲突问题的快速解决方法
2016/04/28 Javascript
基于Bootstrap重置输入框内容按钮插件
2016/05/12 Javascript
原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)
2016/06/21 Javascript
jQuery实现日期联动效果实例
2016/07/26 Javascript
AngularJS入门教程之ng-class 指令用法
2016/08/01 Javascript
JS实现多级菜单中当前菜单不随页面跳转样式而发生变化
2017/05/30 Javascript
ReactNative中使用Redux架构总结
2017/12/15 Javascript
Vue.js 表单控件操作小结
2018/03/29 Javascript
详解VUE-地区选择器(V-Distpicker)组件使用心得
2018/05/07 Javascript
微信小程序tabBar 返回tabBar不刷新页面
2019/07/25 Javascript
jQuery实现简单评论功能
2020/08/19 jQuery
[02:28]PWL开团时刻DAY3——Ink Ice与DeMonsTer之间的勾心斗角
2020/11/03 DOTA
[58:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第一场 1月31日
2021/03/11 DOTA
Python中生成Epoch的方法
2017/04/26 Python
python 列表递归求和、计数、求最大元素的实例
2018/11/28 Python
Python实现从N个数中找到最大的K个数
2020/04/02 Python
python用tkinter实现一个简易能进行随机点名的界面
2020/09/27 Python
CSS3 按钮边框动画的实现
2020/11/12 HTML / CSS
Canvas与图片压缩的示例代码
2017/11/28 HTML / CSS
美国男女折扣服饰百货连锁店:Stein Mart
2017/05/02 全球购物
党员个人对照检查材料
2014/10/01 职场文书
Vue3实现简易音乐播放器组件
2022/08/14 Vue.js