简述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模拟登陆类
Mar 29 Python
Python使用getpass库读取密码的示例
Oct 10 Python
python dataframe 输出结果整行显示的方法
Jun 14 Python
centos6.8安装python3.7无法import _ssl的解决方法
Sep 17 Python
python实现点击按钮修改数据的方法
Jul 17 Python
python自带tkinter库实现棋盘覆盖图形界面
Jul 17 Python
numpy.random.shuffle打乱顺序函数的实现
Sep 10 Python
python中sympy库求常微分方程的用法
Apr 28 Python
Python实现aes加密解密多种方法解析
May 15 Python
详解python中GPU版本的opencv常用方法介绍
Jul 24 Python
python获取命令行参数实例方法讲解
Nov 02 Python
python3中确保枚举值代码分析
Dec 02 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
收集的DedeCMS一些使用经验
2007/03/17 PHP
php统计文章排行示例
2014/03/04 PHP
php常用表单验证类用法实例
2015/06/18 PHP
prototype 1.5相关知识及他人笔记
2006/12/16 Javascript
js中格式化日期时间型数据函数代码
2010/11/08 Javascript
改变文件域的样式实现思路同时兼容ie、firefox
2013/10/23 Javascript
js取消单选按钮选中示例代码
2013/11/14 Javascript
JavaScript每天定时更换皮肤样式的方法
2015/07/01 Javascript
逻辑表达式中与或非的用法详解
2016/06/06 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
2016/12/15 Javascript
JS实现的二叉树算法完整实例
2017/04/06 Javascript
详解VUE 定义全局变量的几种实现方式
2017/06/01 Javascript
js获取地址栏参数的两种方法
2017/06/27 Javascript
JS中的回调函数实例浅析
2018/03/21 Javascript
webpack 静态资源集中输出的方法示例
2018/11/09 Javascript
python 读写中文json的实例详解
2017/10/29 Python
python 将md5转为16字节的方法
2018/05/29 Python
python和shell监控linux服务器的详细代码
2018/06/22 Python
Python实现基于POS算法的区块链
2018/08/07 Python
使用Python的networkx绘制精美网络图教程
2019/11/21 Python
解决python3输入的坑——input()
2020/12/05 Python
Ellos丹麦:时尚和服装在线
2016/09/19 全球购物
什么是数组名
2012/05/10 面试题
信息专业个人的自我评价
2013/12/27 职场文书
《雨点儿》教学反思
2014/04/14 职场文书
设备管理实施方案
2014/05/31 职场文书
医学求职自荐信
2014/06/21 职场文书
羽毛球社团活动总结
2014/06/27 职场文书
幼儿教师小班个人总结
2015/02/05 职场文书
2015年社会治安综合治理工作总结
2015/04/10 职场文书
用电申请报告范文
2015/05/18 职场文书
地道战观后感500字
2015/06/04 职场文书
2016特色励志班级口号
2015/12/24 职场文书
2016年“11.11”光棍节活动总结
2016/04/05 职场文书
Pandas实现DataFrame的简单运算、统计与排序
2022/03/31 Python
nginx静态资源的服务器配置方法
2022/07/07 Servers