美文网首页Deep-Learning-with-PyTorch
Deep-Learning-with-PyTorch-2.4 T

Deep-Learning-with-PyTorch-2.4 T

作者: 追求科技的足球 | 来源:发表于2020-09-12 14:15 被阅读0次

2.4 Torch Hub

从深度学习的早期开始,就已经发布了预训练的模型,但是直到PyTorch 1.0为止,还没有办法确保用户具有统一的接口来获取它们。 正如我们在本章前面所看到的,TorchVision是清晰接口的一个很好的例子。 但是,正如我们对CycleGAN和NeuralTalk2所见,其他作者选择了不同的设计。

PyTorch 1.0引入了Torch Hub,Torch Hub是一种机制,作者可以通过该机制在GitHub上发布具有或不具有预训练权重的模型,并通过PyTorch理解的接口来公开它。 这使得从第三方加载预训练模型就像加载TorchVision模型一样容易。

作者通过Torch Hub机制发布模型所需要做的就是在GitHub存储库的根目录中放置一个名为hubconf.py的文件。 该文件具有非常简单的结构:

# 代码所依赖的模块的可选列表
dependencies = ['torch', 'math']

# 作为存储库的入口点向用户公开的一项或多项功能。 这些函数应根据参数初始化模型并返回它们
def some_entry_fn(*args, **kwargs):
    model = build_some_model(*args, **kwargs)
    return model
    
def another_entry_fn(*args, **kwargs):
    model = build_another_model(*args, **kwargs)
    return model

为了寻求有趣的预训练模型,我们现在可以搜索包含hubconf.py的GitHub存储库,并且马上知道可以使用torch.hub模块加载它们。 让我们看看如何在实践中做到这一点。 为此,我们将返回TorchVision,因为它提供了如何与Torch Hub交互的清晰示例。

让我们访问https://github.com/pytorch/vision,注意其中包含一个hubconf.py文件。 很好,可以检查。 要做的第一件事是查看该文件以查看存储库的入口点-我们稍后需要指定它们。 对于TorchVision,有两个:resnet18和resnet50。 我们已经知道它们的作用:它们分别返回18层和50层的ResNet模型。 我们还看到入口点函数包括一个预训练的关键字参数。 如果为True,则返回的模型将使用从ImageNet学习的权重进行初始化,如本章前面所述。

现在我们知道了仓库,入口点和一个有趣的关键字参数。这就是我们需要使用torch.hub加载模型,甚至无需克隆仓库的全部内容。 是的,PyTorch将为我们处理:

import torch
from torch import hub

resnet18_model = hub.load('pytorch/vision:master',      # GitHub存储库的名称和分支    
                            'resnet18', # 入口函数的名称
                            pretrained=True) # 关键字参数

这样可以将pytorch / visionrepo的master分支的快照及其权重下载到本地目录(在我们的主目录中默认为.torch / hub),并运行resnet18入口点函数,该函数返回实例化的模型。 根据环境的不同,Python可能会抱怨缺少模块,例如PIL。 Torch Hub不会安装缺少的依赖项,但会向我们报告这些依赖项,以便我们采取行动。

在这一点上,我们可以使用适当的参数调用返回的模型,以对它运行前向传递,就像我们之前做的一样。 令人高兴的是,现在通过这种机制发布的每个模型都可以使用相同的方式对我们进行访问,这超出了视觉范围。

注意入口点应该返回模型。 但是严格来说,他们并没有被迫这么做。 例如,我们可能有一个用于转换输入的入口点,另一个用于将输出概率转换为文本标签的入口点。 或者,我们可以只为模型提供一个入口,而另一个入口包括模型以及预处理和后处理步骤。 通过打开这些选项,PyTorch开发人员为社区提供了足够的标准化和很大的灵活性。 我们将看到这个机会将会出现什么模式。

在撰写本文时,Torch Hub还是一个相当新的东西,并且只有很少的模型以这种方式发布。 我们可以通过谷歌搜索“ github.com hubconf.py”来找到它们。 希望随着更多作者通过此渠道分享他们的模型,该列表将来会增加。

相关文章

  • Deep-Learning-with-PyTorch-2.4 T

    2.4 Torch Hub 从深度学习的早期开始,就已经发布了预训练的模型,但是直到PyTorch 1.0为止,还...

  • t t t t

    122

  • T^T泡面T^T

    小时候的愿望,领到第一笔工资,就买一箱方便面,过个瘾。吃个够。 不知从何时起,觉得泡面没...

  • T.T.T

    凌晨开始失眠 老旧的风扇作响 行人依旧失联 竞选的结果落榜 窗外还是午夜 四周死寂一片 黑暗掺杂呜咽 城市边缘底线...

  • T^T

    嗯,忽然不想说话,怕你觉得我无聊才找你,怕你不太想理我,怕你觉得我无聊,自卑心作祟,我怎么什么都没有,或许你没有,...

  • T^T

    难受得一批 现在上半个学期 都在为实习工作而奔波 之前在等校招对那些提前来学校的企业却没有上心 而校招也没有方向就...

  • T^T

    那些你很冒险的梦-林俊杰 当两颗心开始震动 当你瞳孔学会闪躲 当爱慢慢被遮住只剩下黑 距离像影子被拉拖 当爱的故事...

  • T﹏T

    小丑,正如它的名字一样,绿色头发惨白皮肤,咧着嘴涂着红色口红,的确给人的感觉不怎么好看。但正是它独特的造型,被凭借...

  • (T ^ T)

    我觉得世间人是最复杂的。 从一些相处之中,我感到一些人的固执几见最可悲。内心里就那点偏见,似乎再无其他。 有个人对...

  • 《看老友记学英语》Tit for tat 以牙还牙

    tit for tat 英 [ˌtɪt fə ˈtæt] 美 [ˌtɪt fər ˈtæt] n.以牙还牙;针...

网友评论

    本文标题:Deep-Learning-with-PyTorch-2.4 T

    本文链接:https://www.haomeiwen.com/subject/blswektx.html