解决Pytorch 加载训练好的模型 遇到的error问题


Posted in Python onJanuary 10, 2020

这是一个非常愚蠢的错误

debug的时候要好好看error信息

提醒自己切记好好对待error!切记!切记!

-----------------------分割线----------------

pytorch 已经非常友好了 保存模型和加载模型都只需要一条简单的命令

#保存整个网络和参数
torch.save(your_net, 'save_name.pkl')
#加载保存的模型
net = torch.load('save_name.pkl')

因为我比较懒我就想直接把整个网络都保存下来,然后在test文件中直接load一下不就好了?

解决Pytorch 加载训练好的模型 遇到的error问题

就遭受了这样的错误。看错了error信息,把‘Net'看成‘net'。报错没有属性‘net'?这个不是我自己写的变量名么?

-----------------瞎捣鼓1h后(呵呵呵)----------------

回头看error,没有属性‘Net',Net???

解决Pytorch 加载训练好的模型 遇到的error问题

我当下明白过来,应该是test文件中没有把它import进来,test中就没有任何关于Net的信息。我直接把定义的Net复制进了test.py,就顺利加载了训练好的模型。

但是我也有一个疑问,我理解的把整个模型保存难道不是把它的结构都保存下来了么?为什么还要再把这个网络import一次?来自python、pytorch、面向对象编程三次元小白的疑惑,先存个疑,搞懂了再来回答。

接下来试试只保存网络参数

#只保存网络参数
torch.save(your_net.state_dict(), 'save_name.pkl')
#加载保存的模型
net.load_state_dict(torch.load('save_name.pkl'))

保存网络参数

解决Pytorch 加载训练好的模型 遇到的error问题

重新定义网络

解决Pytorch 加载训练好的模型 遇到的error问题

报错

解决Pytorch 加载训练好的模型 遇到的error问题

想死。。。

仔细看了报错信息,以我小白的理解,我感觉保存下来的可能只是单纯的数据,而不是一个对象(没有方法可以操作),或者该对象没有.copy()方法,所以没有办法进行.copy(),那肯定是保存哪里出错了。然后发现保存部分代码写错了,改成

解决Pytorch 加载训练好的模型 遇到的error问题

print一下 net.state_dict和net.state_dict(),前者输出的是网络结构,后者才是网络的参数。

试着回答之前的问题,第二种保存模型的方法只保存了网络的参数(包括卷积层和全连接层每次的weight,bias),所以再加载模型的时候需要先定义网络无可厚非,就像训练时候定义网络那样定义就可以;而第一种保存整个网络的方法,保存了一个网络的实例(包括它的所有结构和参数),net是Net的一个实例,那为什么还要有Class Net的定义呢,还是回答不了。。

那就继续存疑,保持探究精神吧。。

以上这篇解决Pytorch 加载训练好的模型 遇到的error问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中from module import * 的一个坑
Jul 20 Python
python执行get提交的方法
Apr 29 Python
再谈Python中的字符串与字符编码(推荐)
Dec 14 Python
几行Python代码爬取3000+上市公司的信息
Jan 24 Python
详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
May 07 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
Aug 26 Python
使用浏览器访问python写的服务器程序
Oct 10 Python
PYTHON发送邮件YAGMAIL的简单实现解析
Oct 28 Python
python单向循环链表原理与实现方法示例
Dec 03 Python
通过实例解析Python return运行原理
Mar 04 Python
Python flask框架实现浏览器点击自定义跳转页面
Jun 04 Python
Linux系统下升级pip的完整步骤
Jan 31 Python
Ubuntu16.04安装python3.6.5步骤详解
Jan 10 #Python
Pytorch 保存模型生成图片方式
Jan 10 #Python
在pytorch中对非叶节点的变量计算梯度实例
Jan 10 #Python
python如何获取apk的packagename和activity
Jan 10 #Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
Jan 10 #Python
python颜色随机生成器的实例代码
Jan 10 #Python
关于python pycharm中输出的内容不全的解决办法
Jan 10 #Python
You might like
给初学者的30条PHP最佳实践(荒野无灯)
2011/08/02 PHP
浅谈apache和nginx的rewrite的区别
2013/02/22 PHP
php 判断字符串中是否包含html标签
2014/02/17 PHP
ThinkPHP中的常用查询语言汇总
2014/08/22 PHP
关于PHP内置的字符串处理函数详解
2017/02/04 PHP
PHP常用操作类之通信数据封装类的实现
2017/07/16 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
2019/06/22 PHP
jQuery filter函数使用方法
2014/05/19 Javascript
JavaScript设计模式之抽象工厂模式介绍
2014/12/28 Javascript
javascript实现左右控制无缝滚动
2014/12/31 Javascript
jQuery EasyUI tree 使用拖拽时遇到的错误小结
2016/10/10 Javascript
JS闭包可被利用的常见场景小结
2017/04/09 Javascript
bootstrap 设置checkbox部分选中效果
2017/04/20 Javascript
JavaScript实现简单的双色球(实例讲解)
2017/07/31 Javascript
Vue组件之自定义事件的功能图解
2018/02/01 Javascript
Angularjs中的$apply及优化使用详解
2018/07/02 Javascript
webpack4+react多页面架构的实现
2018/10/25 Javascript
使用jquery-easyui的布局layout写后台管理页面的代码详解
2019/06/19 jQuery
[04:27]DOTA2官方论坛水友赛集锦
2013/09/16 DOTA
[54:27]TNC vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[53:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第三场 1月18日
2021/03/11 DOTA
python进阶教程之模块(module)介绍
2014/08/30 Python
python代码实现ID3决策树算法
2017/12/20 Python
解决win64 Python下安装PIL出错问题(图解)
2018/09/03 Python
使用pip发布Python程序的方法步骤
2018/10/11 Python
Python 实现Serial 与STM32J进行串口通讯
2019/12/18 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
2020/02/11 Python
Python实现子类调用父类的初始化实例
2020/03/12 Python
美国领先的精品家居照明和装饰产品在线零售商:LightsOnline.com
2018/01/23 全球购物
Myprotein俄罗斯官网:欧洲第一运动营养品牌
2019/05/05 全球购物
大学生素质拓展活动方案
2014/02/11 职场文书
人民调解员培训方案
2014/06/05 职场文书
公安局班子个人对照检查材料思想汇报
2014/10/09 职场文书
环卫工人慰问信
2015/02/15 职场文书
2015年库房工作总结
2015/04/30 职场文书
鸿蒙3.0体验感怎么样? 鸿蒙3.0系统评测向
2022/08/14 数码科技