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抓取京东价格分析京东商品价格走势
Jan 09 Python
python optparse模块使用实例
Apr 09 Python
使用Python的Zato发送AMQP消息的教程
Apr 16 Python
ansible作为python模块库使用的方法实例
Jan 17 Python
Python利用operator模块实现对象的多级排序详解
May 09 Python
tensorflow实现逻辑回归模型
Sep 08 Python
python正则表达式去除两个特殊字符间的内容方法
Dec 24 Python
实时获取Python的print输出流方法
Jan 07 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
Jul 13 Python
详解python datetime模块
Aug 17 Python
python 爬虫网页登陆的简单实现
Nov 30 Python
pytorch finetuning 自己的图片进行训练操作
Jun 05 Python
matplotlib画混淆矩阵与正确率曲线的实例代码
Jun 01 #Python
详细介绍python类及类的用法
教你怎么用PyCharm为同一服务器配置多个python解释器
用python批量解压带密码的压缩包
May 31 #Python
变长双向rnn的正确使用姿势教学
如何在Python项目中引入日志
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
You might like
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
2011/12/19 PHP
使用PHPWord生成word文档的方法详解
2019/06/06 PHP
ajax无刷新动态调用股票信息(改良版)
2008/11/01 Javascript
JS定义回车事件(实现代码)
2013/07/08 Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
2015/02/13 Javascript
javascript 继承学习心得总结
2016/03/17 Javascript
Node.js连接postgreSQL并进行数据操作
2016/12/18 Javascript
微信小程序之拖拽排序(代码分享)
2017/01/21 Javascript
基于JS实现仿百度百家主页的轮播图效果
2017/03/06 Javascript
微信小程序实现弹出菜单
2018/07/19 Javascript
详解使用React制作一个模态框
2019/03/14 Javascript
webpack HappyPack实战详解
2019/10/08 Javascript
微信小程序实现一个简单swiper代码实例
2019/12/30 Javascript
浅析vue cli3 封装Svgicon组件正确姿势(推荐)
2020/04/27 Javascript
JavaScript 正则应用详解【模式、欲查、反向引用等】
2020/05/13 Javascript
微信小程序实现列表滚动头部吸顶的示例代码
2020/07/12 Javascript
跟老齐学Python之print详解
2014/09/28 Python
在Python中使用NLTK库实现对词干的提取的教程
2015/04/08 Python
python字典的常用操作方法小结
2016/05/16 Python
Python使用ntplib库同步校准当地时间的方法
2016/07/02 Python
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
Python虚拟环境项目实例
2017/11/20 Python
对pandas数据判断是否为NaN值的方法详解
2018/11/06 Python
python selenium执行所有测试用例并生成报告的方法
2019/02/13 Python
一步步教你用python的scrapy编写一个爬虫
2019/04/17 Python
Django框架实现的分页demo示例
2019/05/25 Python
详解python编译器和解释器的区别
2019/06/24 Python
Django 1.10以上版本 url 配置注意事项详解
2019/08/05 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
2020/04/27 Python
小白教你PyCharm从下载到安装再到科学使用PyCharm2020最新激活码
2020/09/25 Python
瑞士香水购物网站:Parfumcity.ch
2017/01/14 全球购物
成功经营餐厅的创业计划书范文
2013/12/26 职场文书
2014道德模范事迹材料
2014/02/16 职场文书
2015重阳节座谈会主持词
2015/07/30 职场文书
欢送领导祝酒词
2015/08/12 职场文书
写作技巧:如何撰写一份优秀的营销策划书
2019/08/13 职场文书