简述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中使用Flask、MongoDB搭建简易图片服务器
Feb 04 Python
python抽象基类用法实例分析
Jun 04 Python
浅谈python字符串方法的简单使用
Jul 18 Python
使用Python脚本和ADB命令实现卸载App
Feb 10 Python
python距离测量的方法
Mar 06 Python
在python win系统下 打开TXT文件的实例
Apr 29 Python
pandas.DataFrame选取/排除特定行的方法
Jul 03 Python
python 保存float类型的小数的位数方法
Oct 17 Python
python 实现提取某个索引中某个时间段的数据方法
Feb 01 Python
Django使用中间键实现csrf认证详解
Jul 22 Python
详解Python Opencv和PIL读取图像文件的差别
Dec 27 Python
Python 利用argparse模块实现脚本命令行参数解析
Dec 28 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
dede3.1分页文字采集过滤规则详说(图文教程)续二
2007/04/03 PHP
php实现图片上传并利用ImageMagick生成缩略图
2016/03/14 PHP
php组合排序简单实现方法
2016/10/15 PHP
javascript forEach通用循环遍历方法
2010/10/11 Javascript
js onload事件不起作用示例分析
2013/10/09 Javascript
分享一款基于jQuery的视频播放插件
2014/10/09 Javascript
Node.js中安全调用系统命令的方法(避免注入安全漏洞)
2014/12/05 Javascript
node.js中的fs.fchownSync方法使用说明
2014/12/16 Javascript
Javascript访问器属性实例分析
2014/12/30 Javascript
PHP守护进程实例
2015/03/06 Javascript
JQuery实现样式设置、追加、移除与切换的方法
2015/06/11 Javascript
JQuery控制图片由中心点逐渐放大效果
2016/06/26 Javascript
详解vue-router基本使用
2017/04/18 Javascript
Node.JS利用PhantomJs抓取网页入门教程
2017/05/19 Javascript
javascript 中事件冒泡和事件捕获机制的详解
2017/09/01 Javascript
Vue项目中如何引入icon图标
2018/03/28 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
2018/05/22 jQuery
Vue2.0中三种常用传值方式(父传子、子传父、非父子组件传值)
2018/08/16 Javascript
详解React中传入组件的props改变时更新组件的几种实现方法
2018/09/13 Javascript
使用JavaScript解析URL的方法示例
2019/03/01 Javascript
Javascript的this详解
2019/03/23 Javascript
vscode中Vue别名路径提示的实现
2020/07/31 Javascript
python中关于时间和日期函数的常用计算总结(time和datatime)
2013/03/08 Python
Python批量查询域名是否被注册过
2017/06/21 Python
实例讲解Python中浮点型的基本内容
2019/02/11 Python
Python 3.8正式发布,来尝鲜这些新特性吧
2019/10/15 Python
Pytorch 实现冻结指定卷积层的参数
2020/01/06 Python
Python实现对word文档添加密码去除密码的示例代码
2020/12/29 Python
德国最大的设计师鞋网上商店:Budapester
2017/12/07 全球购物
澳大利亚Mocha官方网站:包、钱包、珠宝和配饰
2019/07/18 全球购物
德国游戏机商店:Konsolenkost
2019/12/08 全球购物
德国户外装备、登山运动和攀岩商店:tapir store
2020/02/12 全球购物
如果NULL和0作为空指针常数是等价的,那我到底该用哪一个
2014/09/16 面试题
音乐课外活动总结
2015/05/09 职场文书
Java面试题冲刺第十八天--Spring框架3
2021/08/07 面试题
详解Oracle数据库中自带的所有表结构(sql代码)
2021/11/20 Oracle