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

 更新时间:2020年01月07日 14:25:31   作者:wuming无名  
今天小编就为大家分享一篇pytorch加载自定义网络权重的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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

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中的Dict

    详解Python中的Dict

    这篇文章主要为大家介绍了Python中的Dict,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • 简单分析python的类变量、实例变量

    简单分析python的类变量、实例变量

    在本篇文章中小编给大家整理的是关于python类变量、实例变量的知识点内容,有需要的朋友们可以学习下。
    2019-08-08
  • python简单批量梯度下降代码

    python简单批量梯度下降代码

    大家好,本篇文章主要讲的是python简单批量梯度下降代码,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2022-01-01
  • Python如何根据字典中的值排序

    Python如何根据字典中的值排序

    这篇文章主要介绍了Python如何根据字典中的值排序问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • python数据结构之递归方法讲解

    python数据结构之递归方法讲解

    这篇文章主要介绍了python数据结构之递归讲解,递归是解决问题的一种方法,它将问题不断地分成更小的子问题,直到子问题可以用普通的方法解决。通常情况下,递归会使用一个不停调用自己的函数,下面来看看文章对此的详细介绍吧
    2021-12-12
  • pytest生成Allure报告以及查看报告的实现

    pytest生成Allure报告以及查看报告的实现

    本文主要介绍了pytest生成Allure报告以及查看报告的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Python中实现输入超时及如何通过变量获取变量名

    Python中实现输入超时及如何通过变量获取变量名

    这篇文章主要介绍了Python中实现输入超时以及通过变量获取变量的名字,本文给大家分享了解决思路主要是通过多线程法实现,需要的朋友可以参考下
    2020-01-01
  • Matplotlib绘图基础之动画绘制详解

    Matplotlib绘图基础之动画绘制详解

    matplotlib的动画一直是一个强大但使用频率不高的功能,通过动画来展示数据和模型的变化过程,可使数据的可视化更加生动形象,下面就跟随小编一起学习一下Matplotlib是如何绘制动画的吧
    2023-08-08
  • Django视图和URL配置详解

    Django视图和URL配置详解

    这篇文章主要介绍了Django视图和URL配置详解,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • flask上使用websocket的方法示例

    flask上使用websocket的方法示例

    本文主要介绍了flask上使用websocket的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06

最新评论