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 BeautifulSoup库抓取58手机维修信息
Nov 21 Python
Python 的 with 语句详解
Jun 13 Python
python获得linux下所有挂载点(mount points)的方法
Apr 29 Python
python使用tensorflow深度学习识别验证码
Apr 03 Python
python实现windows下文件备份脚本
May 27 Python
使用pandas把某一列的字符值转换为数字的实例
Jan 29 Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
Jun 17 Python
Python正则表达式匹配数字和小数的方法
Jul 03 Python
Django 开发调试工具 Django-debug-toolbar使用详解
Jul 23 Python
python 根据字典的键值进行排序的方法
Jul 24 Python
python deque模块简单使用代码实例
Mar 12 Python
利用Python实现学生信息管理系统的完整实例
Dec 30 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
php性能优化分析工具XDebug 大型网站调试工具
2011/05/22 PHP
解析PHP处理换行符的问题 \r\n
2013/06/13 PHP
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
2013/09/28 PHP
网页javascript精华代码集
2007/01/24 Javascript
Javascript 文件夹选择框的两种解决方案
2009/07/01 Javascript
通过jquery还原含有rowspan、colspan的table的实现方法
2012/02/10 Javascript
什么是MEAN?JavaScript编程中的MEAN是什么意思?
2014/12/18 Javascript
微信WeixinJSBridge API使用实例
2015/05/25 Javascript
js简单实现Select互换数据的方法
2015/08/17 Javascript
原生js制作日历控件实例分享
2016/04/06 Javascript
js中json处理总结之JSON.parse
2016/10/14 Javascript
详解Javascript百度地图接口开发文档中的类和方法
2017/02/07 Javascript
JavaScript获取tr td 的三种方式全面总结(推荐)
2017/08/15 Javascript
mint-ui的search组件在键盘显示搜索按钮的实现方法
2017/10/27 Javascript
iview table高度动态设置方法
2018/03/14 Javascript
react同构实践之实现自己的同构模板
2019/03/13 Javascript
初试vue-cli使用HBuilderx打包app的坑
2019/07/17 Javascript
python函数缺省值与引用学习笔记分享
2013/02/10 Python
python+matplotlib演示电偶极子实例代码
2018/01/12 Python
python机器学习理论与实战(五)支持向量机
2018/01/19 Python
Python数据集切分实例
2018/12/08 Python
Python单元和文档测试实例详解
2019/04/11 Python
python爬取基于m3u8协议的ts文件并合并
2019/04/26 Python
python的setattr函数实例用法
2020/12/16 Python
基于css3的属性transition制作菜单导航效果
2015/09/01 HTML / CSS
JAVA软件工程师测试题
2014/07/25 面试题
员工培训邀请函
2014/02/02 职场文书
运动会口号16字
2014/06/07 职场文书
2014年老干部工作总结
2014/11/21 职场文书
公司感谢信范文
2015/01/22 职场文书
廉洁自律个人总结
2015/02/14 职场文书
2015年暑期实践报告范文
2015/07/13 职场文书
小学语文教学反思范文
2016/03/03 职场文书
高质量“欢迎词”
2019/04/03 职场文书
创业计划书之美甲店
2019/09/20 职场文书
HTML+CSS+JS实现图片的瀑布流布局的示例代码
2021/04/22 HTML / CSS