简述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之Python文档
Oct 10 Python
python检测是文件还是目录的方法
Jul 03 Python
使用Python生成随机密码的示例分享
Feb 18 Python
python查看模块,对象的函数方法
Oct 16 Python
对Python信号处理模块signal详解
Jan 09 Python
Python操作redis实例小结【String、Hash、List、Set等】
May 16 Python
Python3 tkinter 实现文件读取及保存功能
Sep 12 Python
浅谈Python type的使用
Nov 19 Python
Python3 hashlib密码散列算法原理详解
Mar 30 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
Nov 24 Python
解决PDF 转图片时丢文字的一种可能方式
Mar 04 Python
python3读取文件指定行的三种方法
May 24 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中使用匿名函数操作数据库的例子
2014/11/17 PHP
php实现根据IP地址获取其所在省市的方法
2015/04/30 PHP
PHP实现原比例生成缩略图的方法
2016/02/03 PHP
php出租房数据管理及搜索页面
2017/05/23 PHP
一实用的实现table排序的Javascript类库
2007/09/12 Javascript
我见过最全的个人js加解密功能页面
2007/12/12 Javascript
js操作Xml(向服务器发送Xml,处理服务器返回的Xml)(IE下有效)
2009/01/30 Javascript
兼容多浏览器的iframe自适应高度(ie8 、谷歌浏览器4.0和 firefox3.5.3)
2009/11/04 Javascript
js获取select选中的option的text示例代码
2013/12/19 Javascript
jQuery中position()方法用法实例
2015/01/16 Javascript
Javascript代码实现仿实例化类
2015/04/03 Javascript
JS 面向对象之继承---多种组合继承详解
2016/07/10 Javascript
微信公众号  提示:Unauthorized API function 问题解决方法
2016/12/05 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
2017/06/01 Javascript
微信小程序之前台循环数据绑定
2017/08/18 Javascript
vue使用技巧及vue项目中遇到的问题
2018/06/04 Javascript
Element UI框架中巧用树选择器的实现
2018/12/12 Javascript
Vuex mutitons和actions初使用详解
2019/03/04 Javascript
详解微信小程序开发用户授权登陆
2019/04/24 Javascript
详解解决小程序中webview页面多层history返回问题
2019/08/20 Javascript
Node.js实现简单管理系统
2019/09/23 Javascript
JavaScript前后端JSON使用方法教程
2020/11/23 Javascript
Python六大开源框架对比
2015/10/19 Python
PYTHON压平嵌套列表的简单实现
2016/06/08 Python
Python中__init__.py文件的作用详解
2016/09/18 Python
python模拟菜刀反弹shell绕过限制【推荐】
2019/06/25 Python
Python GUI库PyQt5样式QSS子控件介绍
2020/02/25 Python
Scrapy框架介绍之Puppeteer渲染的使用
2020/06/19 Python
Python基于yaml文件配置logging日志过程解析
2020/06/23 Python
python xlsxwriter模块的使用
2020/12/24 Python
css sprite简单实例
2016/05/23 HTML / CSS
《春天来了》教学反思
2014/04/07 职场文书
林肯就职演讲稿
2014/05/19 职场文书
大学社团招新的通讯稿
2014/09/10 职场文书
python实现简单的名片管理系统
2021/04/26 Python
Win10系统搭建ftp文件服务器详细教程
2022/08/05 Servers