torch.load()

交流、咨询,有疑问欢迎添加QQ 2125364717,一起交流、一起发现问题、一起进步啊,哈哈哈哈哈

torch.load(f, map_location=None, pickle_module=<module 'pickle' from '/opt/conda/lib/python3.6/pickle.py'>, **pickle_load_args)[source]

从文件中加载一个用torch.save()保存的对象。

load()使用Python的unpickling工具,但是专门处理存储,它是张量的基础。他们首先在CPU上并行化,然后移动到保存它们的设备。如果失败(例如,因为运行时系统没有某些设备),就会引发异常。但是,可以使用map_location参数动态地将存储重新映射到另一组设备。storage参数是存储的初始反序列化,驻留在CPU上。storage参数是存储的初始反序列化,驻留在CPU上。每个序列化存储都有一个与之关联的位置标记,它标识保存它的设备,这个标记是传递给map_location的第二个参数。内置的位置标签是“cpu”为cpu张量和“cuda:device_id”(例如:device_id)。“cuda:2”)表示cuda张量。map_location应该返回None或一个存储。如果map_location返回一个存储,它将被用作最终的反序列化对象,已经移动到正确的设备。否则,torch.load()将退回到默认行为,就好像没有指定map_location一样。如果map_location 是可以调用的,那么对于带有两个参数:存储和位置的序列化存储将被调用一次。如果map_location是一个torch.device对象或一个包含设备标签的字符串,它表示所有张量应该被加载的位置。否则,如果map_location是一个dict,它将用于将文件中出现的位置标记(键)重新映射为指定存储位置的位置标记(值)。用户扩展可以使用torch.serialize.register_package()注册他们自己的位置标签、标记和反序列化方法。

参数:

  • name 类似文件的对象(必须实现read(),:meth ' readline ',:meth ' tell '和:meth ' seek '),或者是包含文件的字符串。
  • map_location – 函数、torch.device或者字典指明如何重新映射存储位置。
  • pickle_module – 用于unpickling元数据和对象的模块(必须匹配用于序列化文件的pickle_module)
  • pickle_load_args – (仅适用于Python 3)传递给pickle_module.load()和pickle_module.Unpickler()的可选关键字参数,例如errors=…

警告:

load()隐式地使用pickle模块,这是不安全的。可以构造恶意pickle数据,在unpickle期间执行任意代码。永远不要加载可能来自不受信任的数据源或可能被篡改的数据。只加载你信任的数据。

注意:

当你在包含GPU张量的文件上调用torch.load()时,默认情况下这些张量会被加载到GPU。你可以调用torch.load(.., map_location='cpu'),然后load_state_dict()以避免在加载一个模型检查点时GPU内存激增。

注意:

默认情况下,我们将字节字符串解码为utf-8。这是为了避免一个常见的错误情况UnicodeDecodeError: 'ascii' codec can't decode byte 0x...在python3中加载由python2保存的文件时。如果这个默认是不正确的,你可以使用一个额外的编码关键字参数指定应该如何加载这些对象,例如,encoding='latin1'中的一个解码字符串使用latin1编码中的一个,和encoding='bytes'让他们作为字节数组可以解码后byte_array.decode (…)。

各位看官老爷,如果觉得对您有用麻烦赏个子,创作不易,0.1元就行了。下面是微信乞讨码:

添加描述

添加描述

例:

>>> torch.load('tensors.pt')
# Load all tensors onto the CPU
>>> torch.load('tensors.pt', map_location=torch.device('cpu'))
# Load all tensors onto the CPU, using a function
>>> torch.load('tensors.pt', map_location=lambda storage, loc: storage)
# Load all tensors onto GPU 1
>>> torch.load('tensors.pt', map_location=lambda storage, loc: storage.cuda(1))
# Map tensors from GPU 1 to GPU 0
>>> torch.load('tensors.pt', map_location={'cuda:1':'cuda:0'})
# Load tensor from io.BytesIO object
>>> with open('tensor.pt', 'rb') as f:
        buffer = io.BytesIO(f.read())
>>> torch.load(buffer)
# Load a module with 'ascii' encoding for unpickling
>>> torch.load('module.pt', encoding='ascii')
本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://blog.csdn.net/weixin_36670529复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • torch(四)、Serialization

    See also: Recommended approach for saving a model

    狼啸风云
  • pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作

    有时在加载已训练好的模型时,会出现 out of memory 的错误提示,但仔细检测使用的GPU卡并没有再用且内存也没有超出。

    砸漏
  • pytorch中model=model.to(device)用法

    其中,device=torch.device("cpu")代表的使用cpu,而device=torch.device("cuda")则代表的使用GPU。

    狼啸风云
  • pytorch的python API略读--序列化和反序列化

    序列化是将某个对象的信息转化成可以存储或者传输的信息的过程,反序列化是和序列化相反的过程。

    用户9875047
  • ls-gan bedroom数据集 pretrain model 和代码

    pretrain model 和代码 https://pan.baidu.com/s/1dFbzjlZ pretrain 下载

    用户1908973
  • PyTorch | 保存和加载模型教程

    原文 | https://pytorch.org/tutorials/beginner/saving_loading_models.html

    kbsc13
  • 【动手学深度学习笔记】之读取和存储

    存储和读取Tensor可以分别使用save函数和load函数实现。save函数的操作对象包括模型、张量和字典等。

    树枝990
  • 使用tensorflow根据输入更改tensor shape

    涉及随机数以及类RNN的网络构建常常需要根据输入shape,决定中间变量的shape或步长。

    砸漏
  • 2021-05-12

    在神经网络中,尤其是CV领域,一般先对图像进行特征提取(常见的有vggnet,resnet,谷歌的inception),这一部分是整个CV任务的根基,因为后续的...

    Hi0703
  • PyTorch专栏(七):模型保存与加载那些事

    【磐创AI 导读】:本篇文章讲解了PyTorch专栏的第三章中的保存和加载模型。查看专栏历史文章,请点击下方蓝色字体进入相应链接阅读。查看关于本专栏的介绍:Py...

    磐创AI
  • 【pytorch】固定(freeze)住部分网络

    因为:即使对bn设置了 requires_grad = False ,一旦 model.train() ,bn还是会偷偷开启update( model.eval...

    JNingWei
  • PyTorch 1.0 中文文档:序列化的相关语义

    ApacheCN_飞龙
  • onnx实现对pytorch模型推理加速

    微软宣布将多平台通用ONNX机器学习引擎开源,此举将让机器学习框架,向着机器学习框架的标准化和性能优化方向迈进了一大步。

    机器学习AI算法工程
  • 【colab pytorch】保存模型

    西西嘛呦
  • pytorch加载和保存模型

    各位看官老爷,如果觉得对您有用麻烦赏个子,创作不易,0.1元就行了。下面是微信乞讨码:

    狼啸风云
  • 【colab pytorch】提取模型中的某一层

    modules()会返回模型中所有模块的迭代器,它能够访问到最内层,比如self.layer1.conv1这个模块,还有一个与它们相对应的是name_child...

    西西嘛呦
  • pytorch随机采样操作SubsetRandomSampler()

    这篇文章记录一个采样器都随机地从原始的数据集中抽样数据。抽样数据采用permutation。 生成任意一个下标重排,从而利用下标来提取dataset中的数据的方...

    砸漏
  • PyTorch 实战(模型训练、模型加载、模型测试)

    https://github.com/huzixuan1/Loader_DateSet

    陶陶name
  • (转载非原创)全面解析Pytorch框架下模型存储,加载以及冻结

    最近在做试验中遇到了一些深度网络模型加载以及存储的问题,因此整理了一份比较全面的在 PyTorch 框架下有关模型的问题。首先咱们先定义一个网络来进行后续的分析...

    xlj

扫码关注腾讯云开发者

领取腾讯云代金券