解决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使用urllib2模块抓取HTML页面资源的实例分享
May 03 Python
Python的shutil模块中文件的复制操作函数详解
Jul 05 Python
python opencv之SIFT算法示例
Feb 24 Python
Python实现的特征提取操作示例
Dec 03 Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
Jul 18 Python
Python 脚本拉取 Docker 镜像问题
Nov 10 Python
ansible动态Inventory主机清单配置遇到的坑
Jan 19 Python
基于Tensorflow使用CPU而不用GPU问题的解决
Feb 07 Python
浅谈Python中的继承
Jun 19 Python
python 下载文件的几种方法汇总
Jan 06 Python
python脚本框架webpy的url映射详解
Nov 20 Python
Python语法学习之进程的创建与常用方法详解
Apr 08 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
天津市收音机工业发展史
2021/03/04 无线电
php防止伪造的数据从URL提交方法
2014/06/27 PHP
PHP正则验证Email的方法
2015/06/15 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
php array_multisort 对数组进行排序详解及实例代码
2016/10/27 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
红米手机抢购的js代码
2014/03/10 Javascript
html文本框提示效果的示例代码
2014/06/28 Javascript
js实现仿Discuz文本框弹出层效果
2015/08/13 Javascript
Winform客户端向web地址传参接收参数的方法
2016/05/17 Javascript
浅谈JavaScript 函数参数传递到底是值传递还是引用传递
2016/08/23 Javascript
JS异步文件分片断点上传的实现思路
2016/12/25 Javascript
jQuery.cookie.js使用方法及相关参数解释
2017/03/06 Javascript
Node.js中多进程模块Cluster的介绍与使用
2017/05/27 Javascript
jQuery实现的手动拖动控制进度条效果示例【测试可用】
2018/04/18 jQuery
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
2018/11/01 NodeJs
Vue源码之关于vm.$delete()/Vue.use()内部原理详解
2019/05/01 Javascript
详解vue 2.6 中 slot 的新用法
2019/07/09 Javascript
[01:02]DOTA2辉夜杯决赛日 CDEC.Y对阵VG赛前花絮
2015/12/27 DOTA
Python的Django框架中forms表单类的使用方法详解
2016/06/21 Python
django实现登录时候输入密码错误5次锁定用户十分钟
2017/11/05 Python
每天迁移MySQL历史数据到历史库Python脚本
2018/04/13 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
详解python读取和输出到txt
2019/03/29 Python
使用 Python 在京东上抢口罩的思路详解
2020/02/27 Python
python图片验证码识别最新模块muggle_ocr的示例代码
2020/07/03 Python
opencv 图像加法与图像融合的实现代码
2020/07/08 Python
Python常用外部指令执行代码实例
2020/11/05 Python
python中pdb模块实例用法
2021/01/15 Python
python实现录制全屏和选择区域录屏功能
2021/02/05 Python
非凡女性奢华谦虚风格:The Modist
2017/10/28 全球购物
加拿大在线隐形眼镜和眼镜店:VisionPros
2019/10/06 全球购物
土建专业毕业生自荐书
2014/07/04 职场文书
2014年幼儿园后勤工作总结
2014/11/10 职场文书
余世维讲座观后感
2015/06/11 职场文书
党性修养心得体会2016
2016/01/21 职场文书