解决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写一个windows下的定时关机脚本(推荐)
Mar 21 Python
Python拼接微信好友头像大图的实现方法
Aug 01 Python
python如何实现一个刷网页小程序
Nov 27 Python
python-django中的APPEND_SLASH实现方法
Jun 21 Python
python启动应用程序和终止应用程序的方法
Jun 28 Python
一篇文章弄懂Python中的可迭代对象、迭代器和生成器
Aug 12 Python
Python Sympy计算梯度、散度和旋度的实例
Dec 06 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
Feb 15 Python
Python基于network模块制作电影人物关系图
Jun 19 Python
Python drop方法删除列之inplace参数实例
Jun 27 Python
如何让PyQt5中QWebEngineView与JavaScript交互
Oct 21 Python
Python中使用Lambda函数的5种用法
Apr 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
把PHP安装为Apache DSO
2006/10/09 PHP
php class中self,parent,this的区别以及实例介绍
2013/04/24 PHP
深入eAccelerator与memcached的区别详解
2013/06/06 PHP
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
2013/06/20 PHP
php网站判断用户是否是手机访问的方法
2013/11/01 PHP
适合PHP初学者阅读的4本经典书籍
2016/09/23 PHP
laravel框架关于搜索功能的实现
2018/03/15 PHP
30个经典的jQuery代码开发技巧
2014/12/15 Javascript
详解jQuery向动态生成的内容添加事件响应jQuery live()方法
2015/11/02 Javascript
JS截取与分割字符串常用技巧总结
2015/11/10 Javascript
JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
2016/02/25 Javascript
探索Javascript中this的奥秘
2016/12/11 Javascript
Javascript中的神器——Promise
2017/02/08 Javascript
jQuery回调方法使用示例
2017/06/26 jQuery
iscroll动态加载数据完美解决方法
2017/07/18 Javascript
vue-resource拦截器设置头信息的实例
2017/10/27 Javascript
countUp.js实现数字滚动效果
2019/10/18 Javascript
element跨分页操作选择详解
2020/06/29 Javascript
Python的Tkinter点击按钮触发事件的例子
2019/07/19 Python
pycharm 安装JPype的教程
2019/08/08 Python
Python中的延迟绑定原理详解
2019/10/11 Python
python实现高斯(Gauss)迭代法的例子
2019/11/20 Python
python快速排序的实现及运行时间比较
2019/11/22 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
2020/03/17 Python
python中PyQuery库用法分享
2021/01/15 Python
Javascript 高级手势使用介绍
2013/04/21 HTML / CSS
详解canvas绘图时遇到的跨域问题
2018/03/22 HTML / CSS
Origins加拿大官网:雅诗兰黛集团高端植物护肤品牌
2017/11/19 全球购物
在网络中有两台主机A和B,并通过路由器和其他交换设备连接起来,已经确认物理连接正确无误,怎么来测试这两台机器是否连通?如果不通,怎么来判断故障点?怎么排
2014/01/13 面试题
公司活动方案范文
2014/03/06 职场文书
岗位竞聘书范文
2014/03/31 职场文书
中学优秀班主任事迹材料
2014/05/01 职场文书
上班迟到检讨书
2015/05/06 职场文书
团结友爱主题班会
2015/08/13 职场文书
升学宴学生致辞
2015/09/29 职场文书
Redis 哨兵机制及配置实现
2022/03/25 Redis