解决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中的exec、eval使用实例
Sep 23 Python
分享python数据统计的一些小技巧
Jul 21 Python
解决Python requests库编码 socks5代理的问题
May 07 Python
Python3使用SMTP发送带附件邮件
Jun 16 Python
Python中矩阵创建和矩阵运算方法
Aug 04 Python
python 利用for循环 保存多个图像或者文件的实例
Nov 09 Python
python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比
Apr 15 Python
Python一键安装全部依赖包的方法
Aug 12 Python
解决Python在导入文件时的FileNotFoundError问题
Apr 10 Python
django 模型中的计算字段实例
May 19 Python
PyQt5的相对布局管理的实现
Aug 07 Python
pytorch model.cuda()花费时间很长的解决
Jun 01 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
可快速识别放射性物质-国外大神教你diy一个开放式辐射探测器
2020/03/12 无线电
phpmyadmin操作流程
2006/10/09 PHP
CI框架验证码CAPTCHA辅助函数用法实例
2014/11/05 PHP
php提交过来的数据生成为txt文件
2016/04/28 PHP
PHP7数组的底层实现示例
2019/08/25 PHP
jQuery UI的Dialog无法提交问题的解决方法
2011/01/11 Javascript
如何使用jQUery获取选中radio对应的值(一句代码)
2013/06/03 Javascript
点击按钮或链接不跳转只刷新页面的脚本整理
2013/10/22 Javascript
JavaScript通过join函数连接数组里所有元素的方法
2015/03/20 Javascript
Vue中封装input组件的实例详解
2017/10/17 Javascript
input type=file 选择图片并且实现预览效果的实例
2017/10/26 Javascript
vue刷新和tab切换实例
2018/02/11 Javascript
Js中使用正则表达式验证输入是否有特殊字符
2018/09/07 Javascript
微信小程序使用 vant Dialog组件的正确方式
2020/02/21 Javascript
vue与iframe之间的信息交互的实现
2020/04/08 Javascript
vue中使用带隐藏文本信息的图片、图片水印的方法
2020/04/24 Javascript
python实现巡检系统(solaris)示例
2014/04/02 Python
一个超级简单的python web程序
2014/09/11 Python
asyncio 的 coroutine对象 与 Future对象使用指南
2016/09/11 Python
详解Python import方法引入模块的实例
2017/08/02 Python
Python有序字典简单实现方法示例
2017/09/28 Python
python 调用c语言函数的方法
2017/09/29 Python
Python 装饰器实现DRY(不重复代码)原则
2018/03/05 Python
Win10系统下安装labelme及json文件批量转化方法
2019/07/30 Python
nginx黑名单和django限速,最简单的防恶意请求方法分享
2019/08/09 Python
django fernet fields字段加密实践详解
2019/08/12 Python
如何基于python实现脚本加密
2019/12/28 Python
css3制作动态进度条以及附加jQuery百分比数字显示
2012/12/13 HTML / CSS
用css3写出气球样式的示例代码
2017/09/11 HTML / CSS
你们项目是如何进行变更控制的
2015/08/26 面试题
关于逃课的检讨书
2014/01/23 职场文书
倡议书范文格式
2014/05/12 职场文书
医院保洁服务方案
2014/06/11 职场文书
大学生毕业求职信
2014/06/12 职场文书
个人承诺书格式范文
2015/04/29 职场文书
春节晚会开场白
2015/05/29 职场文书