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模块restful使用方法实例
Dec 10 Python
Python标准库内置函数complex介绍
Nov 25 Python
Python深度优先算法生成迷宫
Jan 22 Python
Django中的Signal代码详解
Feb 05 Python
快速排序的四种python实现(推荐)
Apr 03 Python
PyQt5的安装配置过程,将ui文件转为py文件后显示窗口的实例
Jun 19 Python
Python如何调用JS文件中的函数
Aug 16 Python
django创建最简单HTML页面跳转方法
Aug 16 Python
python图像处理模块Pillow的学习详解
Oct 09 Python
基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解
Jun 08 Python
Django REST 异常处理详解
Jul 15 Python
Python Flask异步发送邮件实现方法解析
Aug 01 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 foreach 参数强制类型转换的问题
2010/12/10 PHP
php提示undefined index的几种解决方法
2012/05/21 PHP
php设计模式之观察者模式的应用详解
2013/05/21 PHP
jQuery中的常用事件总结
2009/12/27 Javascript
JavaScript中的ubound函数使用实例
2014/11/04 Javascript
node.js中的buffer.write方法使用说明
2014/12/10 Javascript
7个有用的jQuery代码片段分享
2015/05/19 Javascript
jquery实现经典的淡入淡出选项卡效果代码
2015/09/22 Javascript
javaScript实现可缩放的显示区效果代码
2015/10/26 Javascript
jQuery simplePage+AJAX plus分页插件用法实例
2016/02/17 Javascript
Knockoutjs 学习系列(一)ko初体验
2016/06/07 Javascript
Javascript 事件冒泡机制详细介绍
2016/10/10 Javascript
前端图片懒加载(lazyload)的实现方法(提高用户体验)
2017/08/21 Javascript
AngularJS实现注册表单验证功能
2017/10/16 Javascript
在create-react-app中使用css modules的示例代码
2018/07/31 Javascript
JavaScript canvas实现跟随鼠标事件
2020/02/10 Javascript
用Javascript实现发送短信验证码间隔功能
2021/02/08 Javascript
[59:00]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第一场 3月7日
2021/03/11 DOTA
Python字符串、元组、列表、字典互相转换的方法
2016/01/23 Python
python读取LMDB中图像的方法
2018/07/02 Python
python使用opencv驱动摄像头的方法
2018/08/03 Python
简单了解Pandas缺失值处理方法
2019/11/16 Python
python字符串常用方法及文件简单读写的操作方法
2020/03/04 Python
Python读取ini配置文件传参的简单示例
2021/01/05 Python
健康监测猫砂:Pretty Litter
2017/05/25 全球购物
英国翻新电子产品购物网站:Tech Trade
2017/12/25 全球购物
Capitol Lighting的1800lighting.com:住宅和商业照明
2019/04/10 全球购物
英国排名第一的冲浪店:Ann’s Cottage
2020/06/21 全球购物
本科毕业生自我鉴定
2013/11/02 职场文书
饭店工作计划书
2014/01/10 职场文书
优秀应届毕业生推荐信
2014/02/18 职场文书
大专毕业生自我鉴定范文(2篇)
2014/09/27 职场文书
房地产工程部经理岗位职责
2015/04/09 职场文书
党员证明模板
2015/06/19 职场文书
浅谈Laravel中使用Slack进行异常通知
2021/05/29 PHP
浅谈MySQL中的六种日志
2022/03/23 MySQL