0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Facebook新推出了一个深度学习工具包:PyTorch Hub

DPVg_AI_era 来源:lq 2019-06-15 09:58 次阅读

为了解决日益增长的论文可复现性需求,Facebook推出了PyTorch Hub,类似TensorFlow Hub的一个模型共享库,加载ResNet、BERT、GPT、VGG、PGAN还是MobileNet等经典模型只需一行代码。用户可以提交、浏览模型,极大的改善了论文的可复现性难题。

机器学习论文的可复现性一直是个难题。许多机器学习相关论文要么无法复现,要么难以重现。有时候论文读者经常为了调用各种经典机器学习模型,还要重复造轮子。

随着提交给arXiv以及各种会议上的论文数量开始暴涨,可复现性的重要性也越来越凸显。

很多论文选择随文附上代码和训练模型,在一定程度上对使用者起到了帮助作用,但成效并不明显。复现过程中,仍有大量工作需要论文读者自己摸索。

PyTorch Hub是什么?

近日,Facebook新推出了一个深度学习工具包:PyTorch Hub,这是一个简单的API和工作流,提供基本的构建模块从而可以改善机器学习研究的可重现性。

PyTorch Hub包含了一系列与图像分类、图像分割、生成以及转换相关的预训练模型库,例如ResNet、BERT、GPT、VGG、PGAN、MobileNet等经典模型,

PyTorch Hub试图以最傻瓜的方式,提高研究工作的复现性。有多简单呢?图灵奖得主Yann LeCun发推表示,只需要一行代码就可以调用所有仓库里的模型,通过一个pull请求来发布你自己的模型。

同时,PyTorch Hub整合了Google Colab,并集成了论文代码结合网站Papers With Code,可以直接找到论文的代码。

PyTorch Hub怎么用?

复现别人的成果是PyTorch Hub主打功能,那么具体怎么样用呢?PyTorch官方提出三步走策略:浏览可用模型;加载模型;探索已加载的模型。

浏览可用模型

直接用torch.hub.list() API列出所有可用的入口点即可。代码示例:

>>> torch.hub.list('pytorch/vision')>>>['alexnet','deeplabv3_resnet101','densenet121',...'vgg16','vgg16_bn','vgg19', 'vgg19_bn']

加载模型

使用PyTorch加载模型很简单,正如LeCun所说,只需要一行代码即可使用。比如从GitHub里加载一个模型:

mode = torch.hub.load(github, model, force_reload=False, *args, **kwargs)

加载一个PyTorch预训练的模型:

model=torch.hub.load('pytorch/vision','deeplabv3_resnet101',pretrained=True)

在此之外,我们还需要了解一些其它的相对比较复杂的事情,包括探索已加载的模型、复现别人成果的工作流,以及如何快速发布自己的模型。

探索已加载的模型

从PyTorch Hub加载模型后,可以使用dir(model)查看模型的所有可用方法,示例代码:

>>> dir(model)>>>['forward'...'to''state_dict',]

还可以用help(model.forward)对运行该模型所需参数有更深入的了解。

>>> help(model.forward)>>>Help on method forward in module pytorch_pretrained_bert.modeling:forward(input_ids, token_type_ids=None, attention_mask=None, masked_lm_labels=None)...我自己的模型也能发吗?

只需要在预训练模型(包括模型定义及预训练权重)加入一个hubconf.py文件,就可以通过PyTorch Hub将模型发布到GitHub仓库。以torchvision的hubconf.py文件为例:

# Optional list of dependencies required by the packagedependencies = ['torch']from torchvision.models.alexnet import alexnetfrom torchvision.models.densenet import densenet121, densenet169, densenet201, densenet161from torchvision.models.inception import inception_v3from torchvision.models.resnet import resnet18, resnet34, resnet50, resnet101, resnet152, esnext50_32x4d, resnext101_32x8dfrom torchvision.models.squeezenet import squeezenet1_0, squeezenet1_1from torchvision.models.vgg import vgg11, vgg13, vgg16, vgg19, vgg11_bn, vgg13_bn, vgg16_bn, vgg19_bnfrom torchvision.models.segmentation import fcn_resnet101, deeplabv3_resnet101from torchvision.models.googlenet import googlenetfrom torchvision.models.shufflenetv2 import shufflenet_v2_x0_5, shufflenet_v2_x1_0from torchvision.models.mobilenet import mobilenet_v2

torchvision中,模型有3个特性:

每个模型文件可以被独立执行或实现某个功能

不需要除了PyTorch之外的任何软件包(在hubconf.py中编码为 dependencies[‘torch’])

他们不需要单独的入口点,因为模型在创建时可以无缝地开箱即用

最小化包依赖性可减少用户加载模型时遇到的困难。以HuggingFace’s BERT为例:

dependencies = ['torch', 'tqdm', 'boto3', 'requests', 'regex']from hubconfs.bert_hubconf import (bertTokenizer,bertModel,bertForNextSentencePrediction,bertForPreTraining,bertForMaskedLM,bertForSequenceClassification,bertForMultipleChoice,bertForQuestionAnswering,bertForTokenClassification和TensorFlow Hub有什么区别?

前Google Brain员工mat kelcey吐槽“Hub”这个词简直是机器学习模型项目的共享单词,TensorFlow Hub了,PyTorch也Hub了。

那么和PyTorch Hub相比,更早推出的TensorFlow Hub有什么区别呢?

TensorFlow Hub是一个共享可重用的机器学习平台,主要面向开发者,谷歌希望TensorFlow Hub能够为研究人员和开发人员提供一种便利的方式,能够更方便的在社区中共享模型。从某种意义上来讲,除了架构本身,共享预训练模型的同时,也共享了开发模型的计算时间和数据集。示例代码:

!pip install "tensorflow_hub==0.4.0"!pip install "tf-nightly"import tensorflow as tfimporttensorflow_hubashubtf.enable_eager_execution()module_url = "https://tfhub.dev/google/tf2-preview/nnlm-en-dim128/1"embed = hub.KerasLayer(module_url)embeddings = embed(["A long sentence.", "single-word","http://example.com"])print(embeddings.shape)#(3,128)

TensorFlow Hub还有一个非常关键的特性是它的Web端体验。开发人员可以针对开发用例来浏览TF模块,通过TensorFlow Hub推出新的Web体验可以更容易的进行搜索和浏览,同时为multi-publisher平台奠定了基础。

网址:

https://tfhub.dev/

从官方的介绍来看,TF Hub的出发点是开发用例,而PyTorch Hub的出发点是论文复现。目前看来TF Hub的内置模型更多一点;此外,TF Hub提供的web方式浏览模型的体验更好,搜索模型更加方便。

相关资源,方便大家快速上手:

PyTorch Hub API手册:

https://pytorch.org/docs/stable/hub.html

模型提交地址:

https://github.com/pytorch/hub

浏览可用模型:

https://pytorch.org/hub

在 Paper with Code 上浏览更多模型:

https://paperswithcode.com/

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Facebook
    +关注

    关注

    3

    文章

    1427

    浏览量

    54018
  • 深度学习
    +关注

    关注

    73

    文章

    5219

    浏览量

    119860
  • pytorch
    +关注

    关注

    2

    文章

    759

    浏览量

    12820

原文标题:一行代码即可调用18款主流模型!PyTorch Hub轻松解决论文可复现性

文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Microchip(微芯)推出MPLAB机器学习开发工具包

    机器学习(ML)正成为嵌入式设计人员开发或改进各种产品的标准要求。为满足这一需求,Microchip(微芯)近日推出了全新的MPLAB®机器学习开发工具包,提供一套完整的集成工作流程来
    的头像 发表于 09-12 18:26 561次阅读
    Microchip(微芯)<b class='flag-5'>推出</b>MPLAB机器<b class='flag-5'>学习</b>开发<b class='flag-5'>工具包</b>

    Microchip 推出 MPLAB® 机器学习开发工具包,助力开发人员轻松将机器学习集成到 MCU 和 MPU中

    机器学习 (ML) 正成为嵌入式设计人员开发或改进各种产品的标准要求。为满足这一需求,Microchip Technology Inc.(美国微芯科技公司)近日推出了全新的 MPLAB 机器学习
    的头像 发表于 09-11 15:55 333次阅读

    ARM KEIL™MDK工具包的操作流程

    本笔记介绍了ARM®KEIL™MDK工具包的操作流程,该工具包采用了μVision®和MicroSemi(Actel™)包含嵌入式ARM®Cortex™-M3处理器的全新智能融合2(SF2)系列
    发表于 09-04 06:16

    深度学习框架pytorch介绍

    深度学习框架pytorch介绍 PyTorch是由Facebook创建的开源机器学习框架,其中T
    的头像 发表于 08-17 16:10 1096次阅读

    深度学习框架pytorch入门与实践

    的。PyTorch是一个开源的深度学习框架,在深度学习领域得到了广泛应用。本文将介绍PyTorch
    的头像 发表于 08-17 16:03 1181次阅读

    如何在OpenVINO trade工具包中推断两图像?

    无法在OpenVINO™工具包中对两输入图像运行推理。
    发表于 08-15 08:24

    如何在OpenVINO工具包中使用带推理引擎的blob?

    无法确定如何在OpenVINO™工具包中使用带推理引擎的 blob。
    发表于 08-15 07:17

    c++对于ARM软件开发工具包用户及参考指引

    这本书描述了armc++ 1.0版本的ARM软件开发工具包,以下简称为armc++。ARM c++是工具,当与ARM软件开发工具包2.11或更高版本
    发表于 08-08 06:29

    利用OpenVINO工具包检测汽车品牌

    地检测品牌、车标和形状。 OpenVINO TM的Intel&Distribution工具包全面的工具包,用于快速开发模拟人类视觉的应用程序和解决方案。该
    发表于 08-04 07:36

    Pytorch Hub两行代码搞定YOLOv5推理

    Pytorch Hub是一个帮助研究者实现模型再现、快速推理验证的预训练模型库与一套相关的API框架。支持远程从github上下载指定模型、上传与分享训练好的模型、支持从本地加载预训练模型、自定义
    的头像 发表于 06-09 11:36 700次阅读
    <b class='flag-5'>Pytorch</b> <b class='flag-5'>Hub</b>两行代码搞定YOLOv5推理

    如何访问已与eIQ工具包起安装的python版本?

    1.7.3 Ubuntu 安装程序并将该工具包安装在远程板上。 但是,我想知道如何访问该工具包的命令行工具,以及如何访问已与eIQ 工具包
    发表于 06-07 06:46

    PyTorch教程5.5之深度学习中的泛化

    电子发烧友网站提供《PyTorch教程5.5之深度学习中的泛化.pdf》资料免费下载
    发表于 06-05 15:31 1次下载
    <b class='flag-5'>PyTorch</b>教程5.5之<b class='flag-5'>深度</b><b class='flag-5'>学习</b>中的泛化

    PyTorch教程12.1之优化和深度学习

    电子发烧友网站提供《PyTorch教程12.1之优化和深度学习.pdf》资料免费下载
    发表于 06-05 15:08 0次下载
    <b class='flag-5'>PyTorch</b>教程12.1之优化和<b class='flag-5'>深度</b><b class='flag-5'>学习</b>

    想要构建简单的wifi温度计,在哪里可以找到这样简单的工具包和源代码?

    我们正计划构建简单的 wifi 温度计。内置热电偶。可充电电池。Android 应用程序以 F 和 C 显示温度。电池百分比。任何演示套件随时可用?请告诉我们在哪里可以找到这样简单的工具包和源代码?
    发表于 06-01 09:15

    ​计算机视觉深度学习训练推理框架

    PyTorch是由Facebook人工智能研究小组开发的一种基于Lua编写的Torch库的Python实现的深度学习库,也是目前使用范围和体验感最好的一款
    的头像 发表于 05-08 14:20 817次阅读
    ​计算机视觉<b class='flag-5'>深度</b><b class='flag-5'>学习</b>训练推理框架