简述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练习程序批量修改文件名
Jan 16 Python
python基于pygame实现响应游戏中事件的方法(附源码)
Nov 11 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
May 24 Python
Python3匿名函数用法示例
Jul 25 Python
使用celery执行Django串行异步任务的方法步骤
Jun 06 Python
浅谈Django+Gunicorn+Nginx部署之路
Sep 11 Python
简单了解Pandas缺失值处理方法
Nov 16 Python
Python 元组拆包示例(Tuple Unpacking)
Dec 24 Python
python读取mysql数据绘制条形图
Mar 25 Python
python des,aes,rsa加解密的实现
Jan 16 Python
Flask处理Web表单的实现方法
Jan 31 Python
Python基于百度AI实现抓取表情包
Jun 27 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
谈一谈收音机的高放电路
2021/03/02 无线电
php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
2010/05/15 PHP
简单介绍PHP的责任链编程模式
2015/08/11 PHP
浅谈PHP正则中的捕获组与非捕获组
2016/07/18 PHP
PHP巧妙利用位运算实现网站权限管理的方法
2017/03/12 PHP
用Javascript做flash做的事..才完成的一个类.Auntion Action var 0.1
2007/02/23 Javascript
使用JavaScript链式编程实现模拟Jquery函数
2014/12/21 Javascript
JavaScript判断用户是否对表单进行了修改的方法
2015/03/18 Javascript
JS实现样式清新的横排下拉菜单效果
2015/10/09 Javascript
jQuery进行组件开发完整实例
2015/12/15 Javascript
浅析JavaScript中命名空间namespace模式
2016/06/22 Javascript
AngularJS ng-mousedown 指令
2016/08/02 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
2016/09/01 Javascript
解析AngularJS中get请求URL出现的跨域问题
2016/12/01 Javascript
jQuery中on方法使用注意事项详解
2017/02/15 Javascript
jquery仿ps颜色拾取功能
2017/03/08 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
2017/07/17 Javascript
vue 使用外部JS与调用原生API操作示例
2019/12/02 Javascript
koa中间件核心(koa-compose)源码解读分析
2020/06/15 Javascript
微信小程序拖拽排序列表的示例代码
2020/07/08 Javascript
[15:39]教你分分钟做大人:龙骑士
2014/10/30 DOTA
[06:43]DAC2018 4.5 SOLO赛 Maybe vs Paparazi
2018/04/06 DOTA
Python 列表理解及使用方法
2017/10/27 Python
python机器学习之神经网络(三)
2017/12/20 Python
pytorch动态网络以及权重共享实例
2020/01/06 Python
python使用python-pptx删除ppt某页实例
2020/02/14 Python
python正则表达式 匹配反斜杠的操作方法
2020/08/07 Python
Python函数__new__及__init__作用及区别解析
2020/08/31 Python
学前教育教师求职自荐信
2013/09/22 职场文书
毕业生简单求职信
2013/11/19 职场文书
公关关系专员的自我评价分享
2013/11/20 职场文书
开工仪式主持词
2014/03/20 职场文书
募捐倡议书怎么写
2014/05/14 职场文书
麦田里的守望者读书笔记
2015/06/30 职场文书
Java 获取Word中所有的插入和删除修订的方法
2022/04/06 Java/Android
微信小程序实现轮播图指示器
2022/06/25 Javascript