简述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实现拉钩网上的FizzBuzzWhizz问题示例
May 05 Python
python中list循环语句用法实例
Nov 10 Python
Python爬取读者并制作成PDF
Mar 10 Python
详解Python中DOM方法的动态性
Apr 11 Python
Python实现将照片变成卡通图片的方法【基于opencv】
Jan 17 Python
解决python中 f.write写入中文出错的问题
Oct 31 Python
python使用suds调用webservice接口的方法
Jan 03 Python
python numpy存取文件的方式
Apr 01 Python
使用Python发现隐藏的wifi
Mar 04 Python
Anaconda的安装及其环境变量的配置详解
Apr 22 Python
Python参数传递机制传值和传引用原理详解
May 22 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
Jul 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
php时间不正确的解决方法
2008/04/09 PHP
PHP缩略图等比例无损压缩,可填充空白区域补充色
2011/06/10 PHP
深入php之规范编程命名小结
2013/05/15 PHP
php使用websocket示例详解
2014/03/12 PHP
php 类自动载入的方法
2015/06/03 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
2019/02/15 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
2019/03/30 PHP
PHP设计模式入门之迭代器模式原理与实现方法分析
2020/04/26 PHP
PHP实现简单注册登录系统
2020/12/28 PHP
JavaScript 自动分号插入(JavaScript synat:auto semicolon insertion)
2009/11/04 Javascript
javascript之学会吝啬 精简代码
2010/04/25 Javascript
仅IE不支持setTimeout/setInterval函数的第三个以上参数
2011/05/25 Javascript
Dom 学习总结以及实例的使用介绍
2013/04/24 Javascript
用Javascript来生成ftp脚本的小例子
2013/07/03 Javascript
nodejs npm包管理的配置方法及常用命令介绍
2014/06/05 NodeJs
javascript结合CSS实现苹果开关按钮特效
2015/04/07 Javascript
JS实现网页上随机产生超链接地址的方法
2015/11/09 Javascript
form表单数据封装成json格式并提交给服务器的实现方法
2017/12/14 Javascript
nodejs实现的简单web服务器功能示例
2018/03/15 NodeJs
JavaScript实现的DOM树遍历方法详解【二叉DOM树、多叉DOM树】
2018/05/07 Javascript
vue+springmvc导出excel数据的实现代码
2018/06/27 Javascript
浅谈vue加载优化策略
2019/03/19 Javascript
vue eslint简要配置教程详解
2019/07/26 Javascript
解决一个微信号同时支持多个环境网页授权问题
2019/08/07 Javascript
[01:00:30]TFT vs VGJ.T Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
python中字典(Dictionary)用法实例详解
2015/05/30 Python
Python程序中用csv模块来操作csv文件的基本使用教程
2016/03/03 Python
python处理csv中的空值方法
2018/06/22 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
2019/02/27 Python
Django项目使用ckeditor详解(不使用admin)
2019/12/17 Python
国旗下讲话演讲稿
2014/05/08 职场文书
党员组织生活会发言材料
2014/10/17 职场文书
证券公司客户经理岗位职责
2015/04/09 职场文书
2015年小学英语教师工作总结
2015/05/12 职场文书
2021年pycharm的最新安装教程及基本使用图文详解
2021/04/03 Python
Redis 哨兵集群的实现
2021/06/18 Redis