解决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连接MySQL、MongoDB、Redis、memcache等数据库的方法
Nov 15 Python
Python中的tuple元组详细介绍
Feb 02 Python
Python之Scrapy爬虫框架安装及使用详解
Nov 16 Python
python简易实现任意位数的水仙花实例
Nov 13 Python
pygame游戏之旅 添加游戏界面按键图形
Nov 20 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
May 23 Python
华为校园招聘上机笔试题 扑克牌大小(python)
Apr 22 Python
python如何爬取网站数据并进行数据可视化
Jul 08 Python
使用IDLE的Python shell窗口实例详解
Nov 19 Python
python对数组进行排序,并输出排序后对应的索引值方式
Feb 28 Python
python绘制玫瑰的实现代码
Mar 02 Python
python opencv实现简易画图板
Aug 27 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
浅谈PHP调用Webservice思路及源码分享
2014/06/04 PHP
PHP利用APC模块实现文件上传进度条的方法
2015/01/26 PHP
php数值计算num类简单操作示例
2020/05/15 PHP
xml 封装与解析(javascript和C#中)
2009/07/26 Javascript
IE之动态添加DOM节点触发window.resize事件
2010/07/27 Javascript
JavaScript类和继承 prototype属性
2010/09/03 Javascript
从数据结构的角度分析 for each in 比 for in 快的多
2013/07/07 Javascript
jquery 漂亮的删除确认和提交无刷新删除示例
2013/11/13 Javascript
iframe如何动态创建及释放其所占内存
2014/09/03 Javascript
jQuery及JS实现循环中暂停的方法
2015/02/02 Javascript
JavaScript实现获得所有兄弟节点的方法
2015/07/23 Javascript
js HTML5上传示例代码完整版
2016/10/10 Javascript
jquery ajax后台返回list,前台用jquery遍历list的实现
2016/10/30 Javascript
基于JavaScript实现的插入排序算法分析
2017/04/14 Javascript
详解如何使用vue-cli脚手架搭建Vue.js项目
2017/05/19 Javascript
vue中路由验证和相应拦截的使用详解
2017/12/13 Javascript
原生实现一个react-redux的代码示例
2018/06/08 Javascript
浅析vue.js数组的变异方法
2018/06/30 Javascript
JS实现动态无缝轮播
2020/01/11 Javascript
vue实现列表拖拽排序的功能
2020/11/02 Javascript
[01:48]DOTA2 2015国际邀请赛中国区预选赛第二日战报
2015/05/27 DOTA
python3抓取中文网页的方法
2015/07/28 Python
python基于pygame实现响应游戏中事件的方法(附源码)
2015/11/11 Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
2018/08/05 Python
Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
2018/12/05 Python
python连接mongodb集群方法详解
2020/02/13 Python
Python3.7实现验证码登录方式代码实例
2020/02/14 Python
法拉利英国精品店:Ferraris Boutique UK
2019/07/20 全球购物
北京一家公司的.net开发工程师笔试题
2012/04/17 面试题
你所在的项目是如何确定版本号的
2015/12/28 面试题
市场部管理制度
2014/02/02 职场文书
政府采购方案
2014/06/12 职场文书
2014年自愿离婚协议书范本
2014/09/25 职场文书
代办社保委托书范文
2014/10/06 职场文书
毕业设计指导教师评语
2014/12/30 职场文书
教师党员承诺书2015
2015/01/21 职场文书