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的Tornado框架中session支持的实现代码
Aug 21 Python
Python Json模块中dumps、loads、dump、load函数介绍
May 15 Python
Python之用户输入的实例
Jun 22 Python
通过python将大量文件按修改时间分类的方法
Oct 17 Python
用Python和WordCloud绘制词云的实现方法(内附让字体清晰的秘笈)
Jan 08 Python
创建Shapefile文件并写入数据的例子
Nov 26 Python
Python 抓取数据存储到Redis中的操作
Jul 16 Python
Python 实现一个计时器
Jul 28 Python
python实现双人五子棋(终端版)
Dec 30 Python
如何用python爬取微博热搜数据并保存
Feb 20 Python
Python 中数组和数字相乘时的注意事项说明
May 10 Python
宝塔更新Python及Flask项目的部署
Apr 11 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
DOTA2游戏同人动画《龙之血》导演接受采访
2021/03/05 欧美动漫
使用PHP提取视频网站页面中的FLASH地址的代码
2010/04/17 PHP
jQuery+PHP实现的掷色子抽奖游戏实例
2015/01/04 PHP
Zend Framework过滤器Zend_Filter用法详解
2016/12/09 PHP
PHP获取MySQL执行sql语句的查询时间方法
2018/08/21 PHP
laravel中的一些简单实用功能
2018/11/03 PHP
laravel框架实现后台登录、退出功能示例
2019/10/31 PHP
广告显示判断
2006/08/31 Javascript
跨浏览器开发经验总结(三)   警惕“IE依赖综合症”
2010/05/13 Javascript
tangram框架响应式加载图片方法
2013/11/21 Javascript
AngularJS实现按钮提示与点击变色效果
2016/09/07 Javascript
微信小程序 获取微信OpenId详解及实例代码
2016/10/31 Javascript
Bootstrap栅格系统简单实现代码
2017/03/06 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
详解Angular Forms中自定义ngModel绑定值的方式
2018/12/10 Javascript
jQuery pager.js 插件动态分页功能实例分析
2019/08/02 jQuery
Jquery $.map使用方法实例详解
2020/09/01 jQuery
JavaScript 异步时序问题
2020/11/20 Javascript
[52:37]完美世界DOTA2联赛循环赛 Forest vs DM BO2第一场 10.29
2020/10/29 DOTA
python实现简单温度转换的方法
2015/03/13 Python
Python实现的排列组合计算操作示例
2017/10/13 Python
Python Numpy库datetime类型的处理详解
2019/07/13 Python
Django+zTree构建组织架构树的方法
2019/08/21 Python
python函数局部变量、全局变量、递归知识点总结
2019/11/15 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
2020/05/04 Python
如何基于matlab相机标定导出xml文件
2020/11/02 Python
Numpy数组的广播机制的实现
2020/11/03 Python
详解使用scrapy进行模拟登陆三种方式
2021/02/21 Python
英国男女豪华配饰和礼品网站:Black.co.uk
2020/02/28 全球购物
毕业生自我推荐
2013/11/04 职场文书
财务部副经理岗位职责范本
2014/06/17 职场文书
泸县召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
python3实现无权最短路径的方法
2021/05/12 Python
你真的了解PHP中的引用符号(&)吗
2021/05/12 PHP
opencv读取视频并保存图像的方法
2021/06/04 Python
Python+DeOldify实现老照片上色功能
2022/06/21 Python