pytorch之torch.utils.model_zoo.load_url()在给定URL上加载Torch序列化对象

2023-10-13 07:10

本文主要是介绍pytorch之torch.utils.model_zoo.load_url()在给定URL上加载Torch序列化对象,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

torch.utils.model_zoo.load_url(url, model_dir=None)
在给定URL上加载Torch序列化对象。
通俗点说,就是通过提供的.pth文件的url地址来下载指定的.pth文件【在pytorch中.pth文件就是模型的参数文件】

参数:

  • url (string) - 要下载对象的URL
  • model_dir (string, optional) - 保存对象的目录

如果对象已经存在于model_dir中,则将被反序列化并返回。【也就是后面所说的——已经下载好模型的情况】

参数详细说明:
(1)这里被model_zoo加载的权重遵循命名约定标准——url的文件名: 模型名-<SHA256取前n位>.pth,其中<SHA256取前n位>是文件内容的SHA256哈希的前八位或更多位数字。哈希用于确保唯一的名称并验证文件的内容。

The filename part of the URL should follow the naming convention filename-<sha256>.ext where <sha256> is the first eight or more digits of the SHA256 hash of the contents of the file.

例如:

http://data.lip6.fr/cadene/pretrainedmodels/dpn131-7af84be88.pth
http://data.lip6.fr/cadene/pretrainedmodels/resnext101_32x4d-29e315fa.pth
http://data.lip6.fr/cadene/pretrainedmodels/inceptionresnetv2-520b38e4.pth

如何查看SHA256?

  • Window:certutil -hashfile filename SHA256
  • Linux:sha256sum <filename>

在这里插入图片描述

补充——查看文件的三种哈希:

  • Window:
certutil -hashfile filename MD5
certutil -hashfile filename SHA1
certutil -hashfile filename SHA256
  • Linux:
md5sum <filename>
sha1sum <filename>
sha256sum <filename>

(2)model_dir的默认值为$TORCH_HOME/models,其中$TORCH_HOME默认为~/.torch。可以使用$TORCH_MODEL_ZOO环境变量来覆盖默认目录。

我下载的默认路径是:

~/.cache/torch/checkpoints

可以通过设置全局变量export TORCH_HOME=/xx/xxx即可修改下载的默认路径。修改后的路径为$TORCH_HOME/xx/xxx

例子:

weight_url='https://yjxiong.blob.core.windows.net/models/inceptionv3-cuhk-0e09b300b493bc74c.pth'
pretrained_dict = torch.utils.model_zoo.load_url(weight_url)

参考:官方文档


如果对象已经存在于model_dir中,则将被反序列化并返回。
【已经下载好模型的情况】

如果你已经下载好模型了,那么可以通过torch.load(‘the/path/of/.pth’)导入
因为torch.utils.model_zoo.load_url()方法最后返回的时候也是用torch.load接口封装成字典输出

例如我的代码(部分):

weight_url='https://yjxiong.blob.core.windows.net/models/inceptionv3-cuhk-0e09b300b493bc74c.pth'
pretrained_dict = torch.utils.model_zoo.load_url(weight_url)
self.load_state_dict(pretrained_dict)

因此不想下载的话可以用如下代码:

checkpoint=torch.load('~/.cache/torch/checkpoints/inceptionv3-cuhk-0e09b300b493bc74c.pth') 
self.load_state_dict(checkpoint)

这篇关于pytorch之torch.utils.model_zoo.load_url()在给定URL上加载Torch序列化对象的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/201575

相关文章

sqlserver、mysql、oracle、pgsql、sqlite五大关系数据库的对象名称和转义字符

《sqlserver、mysql、oracle、pgsql、sqlite五大关系数据库的对象名称和转义字符》:本文主要介绍sqlserver、mysql、oracle、pgsql、sqlite五大... 目录一、转义符1.1 oracle1.2 sqlserver1.3 PostgreSQL1.4 SQLi

MyBatis延迟加载与多级缓存全解析

《MyBatis延迟加载与多级缓存全解析》文章介绍MyBatis的延迟加载与多级缓存机制,延迟加载按需加载关联数据提升性能,一级缓存会话级默认开启,二级缓存工厂级支持跨会话共享,增删改操作会清空对应缓... 目录MyBATis延迟加载策略一对多示例一对多示例MyBatis框架的缓存一级缓存二级缓存MyBat

JavaScript对象转数组的三种方法实现

《JavaScript对象转数组的三种方法实现》本文介绍了在JavaScript中将对象转换为数组的三种实用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录方法1:使用Object.keys()和Array.map()方法2:使用Object.entr

使用MapStruct实现Java对象映射的示例代码

《使用MapStruct实现Java对象映射的示例代码》本文主要介绍了使用MapStruct实现Java对象映射的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、什么是 MapStruct?二、实战演练:三步集成 MapStruct第一步:添加 Mave

Java中实现对象的拷贝案例讲解

《Java中实现对象的拷贝案例讲解》Java对象拷贝分为浅拷贝(复制值及引用地址)和深拷贝(递归复制所有引用对象),常用方法包括Object.clone()、序列化及JSON转换,需处理循环引用问题,... 目录对象的拷贝简介浅拷贝和深拷贝浅拷贝深拷贝深拷贝和循环引用总结对象的拷贝简介对象的拷贝,把一个

使用Java读取本地文件并转换为MultipartFile对象的方法

《使用Java读取本地文件并转换为MultipartFile对象的方法》在许多JavaWeb应用中,我们经常会遇到将本地文件上传至服务器或其他系统的需求,在这种场景下,MultipartFile对象非... 目录1. 基本需求2. 自定义 MultipartFile 类3. 实现代码4. 代码解析5. 自定

Java整合Protocol Buffers实现高效数据序列化实践

《Java整合ProtocolBuffers实现高效数据序列化实践》ProtocolBuffers是Google开发的一种语言中立、平台中立、可扩展的结构化数据序列化机制,类似于XML但更小、更快... 目录一、Protocol Buffers简介1.1 什么是Protocol Buffers1.2 Pro

SpringBoot加载profile全面解析

《SpringBoot加载profile全面解析》SpringBoot的Profile机制通过多配置文件和注解实现环境隔离,支持开发、测试、生产等不同环境的灵活配置切换,无需修改代码,关键点包括配置文... 目录题目详细答案什么是 Profile配置 Profile使用application-{profil

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp

javaSE类和对象进阶用法举例详解

《javaSE类和对象进阶用法举例详解》JavaSE的面向对象编程是软件开发中的基石,它通过类和对象的概念,实现了代码的模块化、可复用性和灵活性,:本文主要介绍javaSE类和对象进阶用法的相关资... 目录前言一、封装1.访问限定符2.包2.1包的概念2.2导入包2.3自定义包2.4常见的包二、stati