pytorch加载自定义网络权重的实现


Posted in Python onJanuary 07, 2020

在将自定义的网络权重加载到网络中时,报错:

AttributeError: 'dict' object has no attribute 'seek'. You can only torch.load from a file that is seekable. Please pre-load the data into a buffer like io.BytesIO and try to load from it instead.

我们一步一步分析。

模型网络权重保存额代码是:torch.save(net.state_dict(),'net.pkl')

(1)查看获取模型权重的源码:

pytorch源码:net.state_dict()

def state_dict(self, destination=None, prefix='', keep_vars=False):
  r"""Returns a dictionary containing a whole state of the module.

  Both parameters and persistent buffers (e.g. running averages) are
  included. Keys are corresponding parameter and buffer names.

  Returns:
    dict:
      a dictionary containing a whole state of the module

  Example::

    >>> module.state_dict().keys()
    ['bias', 'weight']

  """

将网络中所有的状态保存到一个字典中了,我自己构建的就是一个字典,没问题!

(2)查看保存模型权重的源码:

pytorch源码:torch.save()

def save(obj, f, pickle_module=pickle, pickle_protocol=DEFAULT_PROTOCOL):
  """Saves an object to a disk file.

  See also: :ref:`recommend-saving-models`

  Args:
    obj: saved object
    f: a file-like object (has to implement write and flush) or a string
      containing a file name
    pickle_module: module used for pickling metadata and objects
    pickle_protocol: can be specified to override the default protocol

  .. warning::
    If you are using Python 2, torch.save does NOT support StringIO.StringIO
    as a valid file-like object. This is because the write method should return
    the number of bytes written; StringIO.write() does not do this.

    Please use something like io.BytesIO instead.

函数功能是将字典保存为磁盘文件(二进制数据),那么我们在torch.load()时,就是在内存中加载二进制数据,这就是报错点。

解决方案:将字典保存为BytesIO文件之后,模型再net.load_state_dict()

#b为自定义的字典
torch.save(b,'new.pkl')
net.load_state_dict(torch.load(b))

解决方法很简单,主要记录解决思路。

以上这篇pytorch加载自定义网络权重的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python下尝试多线程编程
Apr 28 Python
在Python中操作字典之update()方法的使用
May 22 Python
在Django中编写模版节点及注册标签的方法
Jul 20 Python
浅述python中argsort()函数的实例用法
Mar 30 Python
基于Python_脚本CGI、特点、应用、开发环境(详解)
May 23 Python
python的paramiko模块实现远程控制和传输示例
Oct 13 Python
linux下python使用sendmail发送邮件
May 22 Python
Python爬取破解无线网络wifi密码过程解析
Sep 17 Python
将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例
Jan 04 Python
TensorFlow2.1.0最新版本安装详细教程
Apr 08 Python
python使用QQ邮箱实现自动发送邮件
Jun 22 Python
Python语言规范之Pylint的详细用法
Jun 24 Python
Matplotlib绘制雷达图和三维图的示例代码
Jan 07 #Python
Pytorch 神经网络—自定义数据集上实现教程
Jan 07 #Python
浅谈Python访问MySQL的正确姿势
Jan 07 #Python
pytorch自定义二值化网络层方式
Jan 07 #Python
Pytorch: 自定义网络层实例
Jan 07 #Python
Python StringIO如何在内存中读写str
Jan 07 #Python
Python内置数据类型list各方法的性能测试过程解析
Jan 07 #Python
You might like
UTF8编码内的繁简转换的PHP类
2009/07/09 PHP
Yii2压缩PHP中模板代码的输出问题
2018/08/28 PHP
PHP JWT初识及其简单示例
2018/10/10 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
用js得到网页中所有的div的id
2020/10/19 Javascript
Javascript中的Split使用方法与技巧
2007/03/09 Javascript
nodejs的require模块(文件模块/核心模块)及路径介绍
2013/01/14 NodeJs
js 点击页面其他地方关闭弹出层(示例代码)
2013/12/24 Javascript
纯js实现遮罩层效果原理分析
2014/05/27 Javascript
JavaScript实现检查页面上的广告是否被AdBlock屏蔽了的方法
2014/11/03 Javascript
jQuery带进度条全屏图片轮播特效代码分享
2020/06/28 Javascript
详解Bootstrap四种图片样式
2016/01/04 Javascript
基于JS实现的笛卡尔乘积之商品发布
2016/05/13 Javascript
BootStrap 智能表单实战系列(五) 表单依赖插件处理
2016/06/13 Javascript
jQuery实现鼠标选中文字后弹出提示窗口效果【附demo源码】
2016/09/05 Javascript
jquery select2的使用心得(推荐)
2016/12/04 Javascript
Bootstrap Table从零开始
2017/06/30 Javascript
Angular.js前台传list数组由后台spring MVC接收数组示例代码
2017/07/31 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
2017/10/25 Javascript
vuex 使用文档小结篇
2018/01/11 Javascript
React传值 组件传值 之间的关系详解
2019/08/26 Javascript
VsCode与Node.js知识点详解
2019/09/05 Javascript
用Python实现通过哈希算法检测图片重复的教程
2015/04/02 Python
在GitHub Pages上使用Pelican搭建博客的教程
2015/04/25 Python
Python简单删除列表中相同元素的方法示例
2017/06/12 Python
将字典转换为DataFrame并进行频次统计的方法
2018/04/08 Python
pygame实现雷电游戏雏形开发
2018/11/20 Python
应用OpenCV和Python进行SIFT算法的实现详解
2019/08/21 Python
jupyter notebook快速入门及使用详解
2020/11/13 Python
python爬取招聘要求等信息实例
2020/11/20 Python
Internal修饰符有什么含义
2013/07/10 面试题
十八届三中全会宣传方案
2014/02/21 职场文书
珠宝的促销活动方案
2014/08/31 职场文书
2016高一新生军训心得体会
2016/01/11 职场文书
500字作文之关于爸爸
2019/11/14 职场文书
Redis基于Bitmap实现用户签到功能
2021/06/20 Redis