简述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 读写文件和file对象的方法(推荐)
Sep 12 Python
python连接mysql实例分享
Oct 09 Python
python读取图片任意范围区域
Jan 23 Python
Python 判断图像是否读取成功的方法
Jan 26 Python
对python实现模板生成脚本的方法详解
Jan 30 Python
学习Python列表的基础知识汇总
Mar 10 Python
python实现俄罗斯方块小游戏
Apr 24 Python
virtualenv介绍及简明教程
Jun 23 Python
Python字典取键、值对的方法步骤
Sep 30 Python
为2021年的第一场雪锦上添花:用matplotlib绘制雪花和雪景
Jan 05 Python
python process模块的使用简介
May 14 Python
Python实现科学占卜 让视频自动打码
Apr 09 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的ob_start();控制您的浏览器cache!
2006/11/25 PHP
PHP AjaxForm提交图片上传并显示图片源码
2016/11/29 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
2017/07/03 PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
2018/05/21 PHP
PHP simplexml_import_dom()函数讲解
2019/02/03 PHP
JavaScript库 开发规则
2009/01/31 Javascript
JavaScript 函数调用规则
2009/09/14 Javascript
用AJAX返回HTML片段中的JavaScript脚本
2010/01/04 Javascript
Json字符串转换为JS对象的高效方法实例
2013/05/01 Javascript
jquery 列表双向选择器之改进版
2013/08/09 Javascript
jQuery封装的获取Url中的Get参数示例
2013/11/26 Javascript
给angular加上动画效遇到的问题总结
2016/02/17 Javascript
基于javascript实现精确到毫秒的倒计时限时抢购
2016/04/17 Javascript
不同js异步函数同步的实现方法
2016/05/28 Javascript
浅谈addEventListener和attachEvent的区别
2016/07/14 Javascript
socket.io学习教程之基本应用(二)
2017/04/29 Javascript
详解Vue中状态管理Vuex
2017/05/11 Javascript
JavaScript之事件委托实例(附原生js和jQuery代码)
2017/07/22 jQuery
Vue.js 2.0和Cordova开发webApp环境搭建方法
2018/02/26 Javascript
vue 解决循环引用组件报错的问题
2018/09/06 Javascript
Webpack设置环境变量的一些误区详解
2019/12/19 Javascript
[45:52]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第二场 12.09
2020/12/12 DOTA
详解Python import方法引入模块的实例
2017/08/02 Python
Python subprocess模块详细解读
2018/01/29 Python
利用python GDAL库读写geotiff格式的遥感影像方法
2018/11/29 Python
解决python运行效率不高的问题
2020/07/20 Python
健身场所或家用健身设备:Life Fitness
2017/11/01 全球购物
APM Monaco中国官网:来自摩纳哥珠宝品牌
2017/12/27 全球购物
模具设计与制造专业应届生求职信
2013/10/18 职场文书
学校就业推荐信范文
2014/05/19 职场文书
医院义诊活动总结
2014/07/04 职场文书
政风行风评议整改方案
2014/09/15 职场文书
小区的门卫岗位职责
2014/10/01 职场文书
学习走群众路线心得体会
2014/11/05 职场文书
Python 数据可视化之Seaborn详解
2021/11/02 Python
Ruby GDBM操作简介及数据存储原理
2022/04/19 Ruby