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

相关文章

Flutter 进阶:绘制加载动画

绘制加载动画:由小圆组成的大圆 1. 定义 LoadingScreen 类2. 实现 _LoadingScreenState 类3. 定义 LoadingPainter 类4. 总结 实现加载动画 我们需要定义两个类:LoadingScreen 和 LoadingPainter。LoadingScreen 负责控制动画的状态,而 LoadingPainter 则负责绘制动画。

Java第二阶段---09类和对象---第三节 构造方法

第三节 构造方法 1.概念 构造方法是一种特殊的方法,主要用于创建对象以及完成对象的属性初始化操作。构造方法不能被对象调用。 2.语法 //[]中内容可有可无 访问修饰符 类名([参数列表]){ } 3.示例 public class Car {     //车特征(属性)     public String name;//车名   可以直接拿来用 说明它有初始值     pu

Anaconda 中遇到CondaHTTPError: HTTP 404 NOT FOUND for url的问题及解决办法

最近在跑一个开源项目遇到了以下问题,查了很多资料都大(抄)同(来)小(抄)异(去)的,解决不了根本问题,费了很大的劲终于得以解决,记录如下: 1、问题及过程: (myenv) D:\Workspace\python\XXXXX>conda install python=3.6.13 Solving environment: done.....Proceed ([y]/n)? yDownloa

MVC(Model-View-Controller)和MVVM(Model-View-ViewModel)

1、MVC MVC(Model-View-Controller) 是一种常用的架构模式,用于分离应用程序的逻辑、数据和展示。它通过三个核心组件(模型、视图和控制器)将应用程序的业务逻辑与用户界面隔离,促进代码的可维护性、可扩展性和模块化。在 MVC 模式中,各组件可以与多种设计模式结合使用,以增强灵活性和可维护性。以下是 MVC 各组件与常见设计模式的关系和作用: 1. Model(模型)

HTML5自定义属性对象Dataset

原文转自HTML5自定义属性对象Dataset简介 一、html5 自定义属性介绍 之前翻译的“你必须知道的28个HTML5特征、窍门和技术”一文中对于HTML5中自定义合法属性data-已经做过些介绍,就是在HTML5中我们可以使用data-前缀设置我们需要的自定义属性,来进行一些数据的存放,例如我们要在一个文字按钮上存放相对应的id: <a href="javascript:" d

PHP7扩展开发之对象方式使用lib库

前言 上一篇文章,我们使用的是函数方式调用lib库。这篇文章我们将使用对象的方式调用lib库。调用代码如下: <?php $hello = new hello(); $result = $hello->get(); var_dump($result); ?> 我们将在扩展中实现hello类。hello类中将依赖lib库。 代码 基础代码 这个扩展,我们将在say扩展上增加相关代码。sa

类的load方法和initialize方法对比

1. load方法在main()之前被调用,而initialize方法在main()之后调用 load方法实际是在load_images过程中被调用的。load_images会将当前应用依赖的所有镜像(动态库)加载到内存,在在加载中首先是对镜像进行扫描,将所有包含 load 方法的类加入列表 loadable_classes ,然后从这个列表中逐一调用其所包含的 load 方法。 +[XXCl

hibernate修改数据库已有的对象【简化操作】

陈科肇 直接上代码: /*** 更新新的数据并并未修改旧的数据* @param oldEntity 数据库存在的实体* @param newEntity 更改后的实体* @throws IllegalAccessException * @throws IllegalArgumentException */public void updateNew(T oldEntity,T newEntity

类和对象的定义和调用演示(C++)

我习惯把类的定义放在头文件中 Student.h #define _CRT_SECURE_NO_WARNINGS#include <string>using namespace std;class student{public:char m_name[25];int m_age;int m_score;char* get_name(){return m_name;}int set_name

react笔记 8-19 事件对象、获取dom元素、双向绑定

1、事件对象event 通过事件的event对象获取它的dom元素 run=(event)=>{event.target.style="background:yellowgreen" //event的父级为他本身event.target.getAttribute("aid") //这样便获取到了它的自定义属性aid}render() {return (<div><h2>{