解决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常用的日期时间处理方法示例
Feb 08 Python
python爬虫的工作原理
Mar 05 Python
python3实现TCP协议的简单服务器和客户端案例(分享)
Jun 14 Python
pycharm在调试python时执行其他语句的方法
Nov 29 Python
Python多进程方式抓取基金网站内容的方法分析
Jun 03 Python
Python自动化之数据驱动让你的脚本简洁10倍【推荐】
Jun 04 Python
在python中用url_for构造URL的方法
Jul 25 Python
python 实现Flask中返回图片流给前端展示
Jan 09 Python
Python Socketserver实现FTP文件上传下载代码实例
Mar 27 Python
Python钉钉报警及Zabbix集成钉钉报警的示例代码
Aug 17 Python
浅谈Selenium 控制浏览器的常用方法
Dec 04 Python
一小时学会TensorFlow2之基本操作2实例代码
Sep 04 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 一个页面执行时间类代码
2010/03/05 PHP
joomla内置的表单验证功能使用方法
2010/06/11 PHP
深入PHP中的HashTable结构详解
2013/06/13 PHP
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
2014/07/18 PHP
javascript setTimeout和setInterval计时的区别详解
2013/06/21 Javascript
jquery $.fn $.fx是什么意思有什么用
2013/11/04 Javascript
Javascript优化技巧之短路表达式详细介绍
2015/03/27 Javascript
JavaScript实现图片滑动切换的代码示例分享
2016/03/06 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
2016/07/27 Javascript
微信小程序 天气预报开发实例代码源码
2017/01/20 Javascript
配置nodejs环境的方法
2017/05/13 NodeJs
vue 如何添加全局函数或全局变量以及单页面的title设置总结
2017/06/01 Javascript
详解PHP后期静态绑定分析与应用
2018/03/21 Javascript
微信小程序之多列表的显示和隐藏功能【附源码】
2018/08/06 Javascript
Javascript Worker子线程代码实例
2020/02/20 Javascript
javascript实现简单搜索功能
2020/03/26 Javascript
vue将data恢复到初始状态 && 重新渲染组件实例
2020/09/04 Javascript
python使用paramiko模块实现ssh远程登陆上传文件并执行
2014/01/27 Python
Python中的map()函数和reduce()函数的用法
2015/04/27 Python
Python正则表达式如何进行字符串替换实例
2016/12/28 Python
Python计时相关操作详解【time,datetime】
2017/05/26 Python
使用requests库制作Python爬虫
2018/03/25 Python
在pandas多重索引multiIndex中选定指定索引的行方法
2018/11/16 Python
python使用PIL模块获取图片像素点的方法
2019/01/08 Python
python中对数据进行各种排序的方法
2019/07/02 Python
Python with语句和过程抽取思想
2019/12/23 Python
python编写一个会算账的脚本的示例代码
2020/06/02 Python
医学护理系毕业生求职信
2013/10/01 职场文书
教师师德演讲稿
2014/05/06 职场文书
财务管理专业自荐书
2014/09/02 职场文书
党支部2014年度工作总结
2014/12/04 职场文书
2015年度优秀员工推荐信
2015/03/23 职场文书
2015年女职工工作总结
2015/05/15 职场文书
Python time库的时间时钟处理
2021/05/02 Python
Java集成swagger文档组件
2021/06/28 Java/Android
vue中的可拖拽宽度div的实现示例
2022/04/08 Vue.js