pytorch通过训练结果的复现设置随机种子


Posted in Python onJune 01, 2021

通过设置全局随机种子使得每次的训练结果相同可以复现

def seed_torch(seed=2018):
    random.seed(seed)
    os.environ['PYTHONHASHSEED'] = str(seed)
    np.random.seed(seed)
    torch.manual_seed(seed)
    torch.cuda.manual_seed(seed)
    torch.backends.cudnn.deterministic = True

这里我主要讲一下模型在复现结果遇到的一些问题。

首先在固定随机种子之后,每次模型训练出来的结果一定是一样的,如果不相同,那么说明训练过程中一定还有一部分随机性操作没有被固定。

将模型参数保存下来,然后加载模型参数进行测试,如果发现结果和训练过程中得到的结果有差异。

这个时候就需要按照以下步骤进行分析:

1、先改变batchsize,看看实验复现的结果是否会发生变化。如果发生变化就说明batchsize会影响模型推理过程中的参数。

2、检查一下forward中有哪些参数跟batchsize有关,或者是不是代码写错了。比如batchsize就会影响LSTM的模型参数的初始化。

3、最后检查测试集划分batch的时候是否都一样。

test_loader = DataLoader(test_dataset, batch_size=batchsize, shuffle=True, num_workers=4, pin_memory=True)

比如这样一行代码,测试集每次都被打乱了,虽然固定了随机种子,但是这样只能保证第k轮的随机种子是一样的,而第1轮和第10轮的随机种子是不一样的。

这样的话,比如模型在第13个epoch收敛,得到的结果在是第13轮的测试集进行测试的,而模型在加载的时候是在第一轮的测试进行测试的,结果自然有差异。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python转换摩斯密码示例
Feb 16 Python
python各种语言间时间的转化实现代码
Mar 23 Python
Python3爬虫爬取百姓网列表并保存为json功能示例【基于request、lxml和json模块】
Dec 05 Python
Python Excel处理库openpyxl使用详解
May 09 Python
ipython和python区别详解
Jun 26 Python
python BlockingScheduler定时任务及其他方式的实现
Sep 19 Python
python线程安全及多进程多线程实现方法详解
Sep 27 Python
python多线程高级锁condition简单用法示例
Nov 07 Python
利用matplotlib实现根据实时数据动态更新图形
Dec 13 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
Mar 08 Python
python爬虫爬取某网站视频的示例代码
Feb 20 Python
python抢购软件/插件/脚本附完整源码
Mar 04 Python
matplotlib画混淆矩阵与正确率曲线的实例代码
Jun 01 #Python
详细介绍python类及类的用法
教你怎么用PyCharm为同一服务器配置多个python解释器
用python批量解压带密码的压缩包
May 31 #Python
变长双向rnn的正确使用姿势教学
如何在Python项目中引入日志
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
You might like
ob_start(),ob_start('ob_gzhandler')使用
2006/12/25 PHP
php strtotime 函数UNIX时间戳
2009/01/14 PHP
使用php清除bom示例
2014/03/03 PHP
php删除二维数组中的重复值方法
2018/03/12 PHP
让alert不出现弹窗的两种方法
2014/05/18 Javascript
JS常用函数使用指南
2014/11/23 Javascript
jQuery中:selected选择器用法实例
2015/01/04 Javascript
JavaScript编程中容易出BUG的几点小知识
2015/01/31 Javascript
基于javascript实现表格的简单操作
2016/05/21 Javascript
如何正确理解javascript的模块化
2017/03/02 Javascript
jquery中each循环的简单回滚操作
2017/05/05 jQuery
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
2018/08/25 Javascript
微信小程序实现评论功能
2018/11/28 Javascript
jquery+php后台实现省市区联动功能示例
2019/05/23 jQuery
vue 解决form表单提交但不跳转页面的问题
2019/10/30 Javascript
基于Web Audio API实现音频可视化效果
2020/06/12 Javascript
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
2018/06/13 Python
python 生成器和迭代器的原理解析
2019/10/12 Python
NumPy中的维度Axis详解
2019/11/26 Python
浅谈对pytroch中torch.autograd.backward的思考
2019/12/27 Python
Python基于requests库爬取网站信息
2020/03/02 Python
Python爬虫抓取论坛关键字过程解析
2020/10/19 Python
用css3写出气球样式的示例代码
2017/09/11 HTML / CSS
canvas如何绘制钟表的方法
2017/12/13 HTML / CSS
美国设计师精美珠宝购物网:Netaya
2016/08/28 全球购物
马来西亚航空官方网站:Malaysia Airlines
2017/07/28 全球购物
澳大利亚领先的孕妇服装品牌:Mamaway
2018/08/14 全球购物
英国排名第一的LED灯泡网站:LED Bulbs
2019/09/03 全球购物
思想品德自我评价
2014/02/04 职场文书
放弃遗产继承公证书
2015/01/26 职场文书
教导主任个人总结
2015/03/03 职场文书
2015教师节师德演讲稿
2015/03/19 职场文书
我的兄弟姐妹观后感
2015/06/15 职场文书
幼儿园亲子活动感想
2015/08/07 职场文书
环保建议书作文500字
2015/09/14 职场文书
Python-OpenCV教程之图像的位运算详解
2021/06/21 Python