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

    文章

    1432

    浏览量

    58338
  • 深度学习
    +关注

    关注

    73

    文章

    5590

    浏览量

    123900
  • pytorch
    +关注

    关注

    2

    文章

    813

    浏览量

    14696

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    SEGGER推出Flasher BitStreamer软件工具

    SEGGER推出了Flasher BitStreamer软件工具,新的软件解决方案扩展了业界领先的Flasher系列工具的编程能力。
    的头像 发表于 11-05 09:09 217次阅读

    eForce无线通信软件开发工具包兼容WLAN模块WKR612AA1

    近期,eForce株式会社宣布,其面向嵌入式设备的无线通信软件开发工具包(μC3-WLAN SDK)现已兼容 KAGA FEI 生产的无线局域网(WLAN)模块"WKR612AA1"。
    的头像 发表于 09-24 15:16 717次阅读

    IQM 宣布 Resonance 量子云平台重大升级,推出全新软件开发工具包

    进程,并为终端用户带来性能强大的新代量子系统。 此次升级将 Qrisp——源自德国弗劳恩霍夫 FOKUS 研究所的项目——设为平台新的默认软件开发工具包 (SDK)。Qrisp
    的头像 发表于 07-11 11:03 452次阅读

    在OpenVINO™工具套件的深度学习工作台中无法导出INT8模型怎么解决?

    无法在 OpenVINO™ 工具套件的深度学习 (DL) 工作台中导出 INT8 模型
    发表于 03-06 07:54

    在Google Colab笔记本电脑上导入OpenVINO™工具包2021中的 IEPlugin类出现报错,怎么解决?

    在 Google* Colab Notebook 上OpenVINO™工具包 2021 中使用了 IEPlugin 。 遇到: ImportError: cannot import name \'IEPlugin\' from \'openvino.inference_engine\'
    发表于 03-05 10:31

    构建开源OpenVINO™工具包后,使用MYRIAD插件成功运行演示时报错怎么解决?

    构建开源OpenVINO™工具包后,使用 MYRIAD 插件成功运行演示。 使用 CPU 插件运行演示时遇到错误: Cannot load library \'libarmPlugin.so
    发表于 03-05 09:57

    安装OpenVINO™工具包稳定扩散后报错,怎么解决?

    已安装OpenVINO™工具包稳定扩散并收到错误消息: \"BackendCompilerFailed: openvino_fx raised RuntimeError
    发表于 03-05 06:56

    云计算开发工具包的功能

    随着云计算技术的不断成熟,越来越多的企业开始将应用和服务迁移到云端,以享受弹性计算资源、高可用性和成本效益等优势。为了加速这进程,云计算服务提供商推出了各种开发工具包。下面,AI部落小编带您了解云计算开发
    的头像 发表于 02-21 11:02 551次阅读

    TDC1000-TDC7200 GUI调试工具求助

    本帖最后由 匿名 于 2025-2-18 21:15 编辑 最近准备玩TDC1000的开发板,官网配套的GUI开发工具包已不能下载了,跪求压缩,谢谢
    发表于 02-17 23:24

    军事应用中深度学习的挑战与机遇

    ,并广泛介绍了深度学习在两主要军事应用领域的应用:情报行动和自主平台。最后,讨论了相关的威胁、机遇、技术和实际困难。主要发现是,人工智能技术并非无所不能,需要谨慎应用,同时考虑到其局限性、网络安全威胁以及
    的头像 发表于 02-14 11:15 818次阅读

    BP神经网络与深度学习的关系

    ),是种多层前馈神经网络,它通过反向传播算法进行训练。BP神经网络由输入层、或多个隐藏层和输出层组成,通过逐层递减的方式调整网络权重,目的是最小化网络的输出误差。 二、深度
    的头像 发表于 02-12 15:15 1339次阅读

    Labview声音和振动工具包示例文件Sound Level

    Labview 声音和振动工具包示例文件,声压测试,有模拟和DAQ两文件。
    发表于 01-05 09:15 5次下载

    TSP工具包软件的应用说明

    需要快速开发测试的行业中,有效的自动化和便捷代码的开发需求比以往任何时候都显得更加突出。企业在努力提高产品质量的同时,更需要寻求更短的上市时间,合适的工具正是实现这目标的关键
    的头像 发表于 01-03 15:53 3286次阅读
    TSP<b class='flag-5'>工具包</b>软件的应用说明

    最新Simplicity SDK软件开发工具包发布

    最新的SimplicitySDK软件开发工具包已经发布!此次更新针对SiliconLabs(芯科科技)第二代无线开发平台带来了包括蓝牙6.0的信道探测(Channel Sounding
    的头像 发表于 12-24 09:47 1465次阅读

    利用Arm Kleidi技术实现PyTorch优化

    PyTorch广泛应用的开源机器学习 (ML) 库。近年来,Arm 与合作伙伴通力协作,持续改进 PyTorch 的推理性能。本文将
    的头像 发表于 12-23 09:19 1617次阅读
    利用Arm Kleidi技术实现<b class='flag-5'>PyTorch</b>优化