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写的图片蜘蛛人代码
Aug 27 Python
跟老齐学Python之网站的结构
Oct 24 Python
Windows8下安装Python的BeautifulSoup
Jan 22 Python
Python中使用strip()方法删除字符串中空格的教程
May 20 Python
利用Python实现颜色色值转换的小工具
Oct 27 Python
详解使用 pyenv 管理多个版本 python 环境
Oct 19 Python
selenium+python实现自动登录脚本
Apr 22 Python
Django Admin实现三级联动的示例代码(省市区)
Jun 22 Python
Python generator生成器和yield表达式详解
Aug 08 Python
python之PyQt按钮右键菜单功能的实现代码
Aug 17 Python
使用 django orm 写 exists 条件过滤实例
May 20 Python
Python开发简易五子棋小游戏
May 02 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 Ajax乱码
2008/04/09 PHP
PHP判断远程图片或文件是否存在的实现代码
2014/02/20 PHP
ThinkPHP框架里隐藏index.php
2016/04/12 PHP
PHP常用算法和数据结构示例(必看篇)
2017/03/15 PHP
详解Yii2 之 生成 URL 的方法
2017/06/16 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
javascript 打开页面window.location和window.open的区别
2010/03/17 Javascript
xml转json的js代码
2012/08/28 Javascript
js onkeypress与onkeydown 事件区别详细说明
2012/12/13 Javascript
点击按钮或链接不跳转只刷新页面的脚本整理
2013/10/22 Javascript
对table和ul实现js分页示例分享
2014/02/24 Javascript
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
2015/12/13 Javascript
谈谈我对JavaScript中typeof和instanceof的深入理解
2015/12/25 Javascript
jquery拖拽排序简单实现方法(效果增强版)
2016/02/16 Javascript
jQuery焦点图左右转换效果
2016/12/12 Javascript
jQuery回调方法使用示例
2017/06/26 jQuery
Vue实现将数据库中带html标签的内容输出(原始HTML(Raw HTML))
2019/10/28 Javascript
原生JS实现烟花效果
2020/03/10 Javascript
JavaScript 装逼指南(js另类写法)
2020/05/10 Javascript
Django卸载之后重新安装的方法
2017/03/15 Python
Python Pexpect库的简单使用方法
2019/01/29 Python
详解Python_shutil模块
2019/03/15 Python
浅谈Python的条件判断语句if/else语句
2019/03/21 Python
Python八皇后问题解答过程详解
2019/07/29 Python
13个Pandas实用技巧,助你提高开发效率
2020/08/19 Python
达拉斯牛仔官方商店:Dallas Cowboys Pro Shop
2018/02/10 全球购物
Napapijri西班牙在线商店:夹克、外套、运动衫等
2020/11/05 全球购物
Three Graces London官网:英国奢侈品牌
2021/03/18 全球购物
雷朋巴西官方商店:Ray-Ban Brasil
2020/07/21 全球购物
请解释一下webService? 如何用.net实现webService
2014/06/09 面试题
乡镇遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
四年级作文之说明文作文
2019/10/14 职场文书
MySQL命令行操作时的编码问题详解
2021/04/14 MySQL
只需要这一行代码就能让python计算速度提高十倍
2021/05/24 Python
MySQL 如何设计统计数据表
2021/06/15 MySQL
Python使用pandas导入xlsx格式的excel文件内容操作代码
2022/12/24 Python