首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >独家 | 教你使用torchlayers 来构建PyTorch 模型(附链接)

独家 | 教你使用torchlayers 来构建PyTorch 模型(附链接)

作者头像
数据派THU
发布2020-05-08 14:43:54
6190
发布2020-05-08 14:43:54
举报
文章被收录于专栏:数据派THU数据派THU

作者:Matthew Mayo

翻译:王琦

校对:和中华

本文约1200字,建议阅读5分钟

本文介绍了torchlayers。torchlayers 旨在做Keras为TensorFlow所做的事情,它提供了更高级的模型构建的API和一些方便的默认值以及附加功能,这些功能对构建PyTorch神经网络很有用。

通过在线搜索的趋势判断(链接:https://trends.google.com/trends/explore?date=today%205-y&geo=US&q=%2Fg%2F11gd3905v1),PyTorch继续受到人们的普遍关注,更重要的是,PyTorch的使用率在不断提高(链接:https://www.kdnuggets.com/2020/01/openai-pytorch-adoption.html)。PyTorch被认为具有强大而灵活的特点,这些特点让其受到了研究者的欢迎。然而,PyTorch过去因缺乏简化的高级API(例如TensorFlow的Keras) 常常受到从业者的批评。但是这种情况最近已经改变了。

torchlayers(见下面链接) 旨在为PyTorch做Keras给TensorFlow所做的事情。这个项目的开发者简洁地定义了它:

torchlayers是一个基于PyTorch的库,提供了torch.nn层的形状和维度的自动推断以及当前最好的网络结构(例如Efficient-Net)中的构建块。

附链接:

https://github.com/szymonmaszke/torchlayers

与Keras中的操作类似,上述的操作不需要用户干预(除了调用一次torchlayers.build)。

除了上面提到的形状和维度的推断,torchlayers 还包括其他类似Keras的层,例如 torchlayers.Reshape(在改变输入张量形状的同时,保留了批量的维度,见下面链接1),包括之前在 ImageNet 竞赛中见过的最好的层(比如 PloyNet,见下面链接2)。此外,它还提供了一些有用的默认值,例如卷积核的大小(torchlayers的默认值是3)。

附链接:

链接1:https://szymonmaszke.github.io/torchlayers/packages/torchlayers.html?highlight=reshape#torchlayers.Reshape

链接2:https://szymonmaszke.github.io/torchlayers/packages/torchlayers.convolution.html?highlight=polynet#torchlayers.convolution.Poly

使用pip安装非常简单:

pip install --user torchlayers  

其他的安装信息(关于Docker 镜像和GPU)可从这里获取(链接:https://szymonmaszke.github.io/torchlayers/#installation)。完整的torchlayers文档可这里获取(链接:https://szymonmaszke.github.io/torchlayers/)。

torchlayers 的GitHub 主页提供了一些例子来展示它的一些功能。我喜欢这个图像和文本分类二合一的例子(见下面链接)!我在下面附上了代码,这例子展示了:

  • torch.nn 和 torchlayers 层的混合使用
  • 形状和维度推断(卷积、线性输入和BatchNorm)
  • 默认的卷积核v大小
  • 卷积的填充默认为 “same”
  • torchlayers池化层的使用(和Keras 相似,全局最大池化)

附链接:

https://github.com/szymonmaszke/torchlayers#simple-image-and-text-classifier-in-one

import torch  
import torchlayers as tl  
  
# torch.nn and torchlayers can be mixed easily   
model = torch.nn.Sequential(  
    tl.Conv(64),                   # specify ONLY out_channels  
    torch.nn.ReLU(),               # use torch.nn wherever you wish  
    tl.BatchNorm(),                # BatchNormNd inferred from input  
    tl.Conv(128),                  # Default kernel_size equal to 3  
    tl.ReLU(),  
    tl.Conv(256, kernel_size=11),  # "same" padding as default  
    tl.GlobalMaxPool(),            # Known from Keras  
    tl.Linear(10),                 # Output for 10 classes  
)  

当指定输入形状后(对于上面定义好的模型,图像和文本分类的输入形状如下所示):我们可以用 torchlayers.build(链接:

https://szymonmaszke.github.io/torchlayers/packages/torchlayers.html?highlight=build#torchlayers.build)来构建一个已经定义好的网络。

# Image...  
mnist_model = tl.build(model, torch.randn(1, 3, 28, 28))  
  
# ...or text  
# [batch, embedding, timesteps], first dimension > 1 for BatchNorm1d to work  
text_model = tl.build(model, torch.randn(2, 300, 1))  

build与Keras中的工作机制类似,相当于将模型编译为PyTorch原语。它通过post_build 函数提供了一些附加功能(例如权重初始化,如下所示),你可以从这个网页了解更多(链接:https://szymonmaszke.github.io/torchlayers/packages/torchlayers.html?highlight=build#torchlayers.build)。

class _MyModuleImpl(torch.nn.Linear):  
    def post_build(self):  
        # You can do anything here really  
        torch.nn.init.eye_(self.weights)  

torchlayers为使用PyTorch来实现类似Keras的模型构建提供了一些有用的功能,并填补了一个明显的空白。时间会告诉我们长期来看该项目会如何发展,但这肯定是一个良好的开端。

相关文章:

  • OpenAI is Adopting PyTorch... They Aren’t Alone 链接:https://www.kdnuggets.com/2020/01/openai-pytorch-adoption.html
  • Gentle Introduction to PyTorch 1.2 链接:https://www.kdnuggets.com/2019/09/gentle-introduction-pytorch-12.html
  • Tokenization and Text Data Preparation with TensorFlow & Keras 链接:https://www.kdnuggets.com/2020/03/tensorflow-keras-tokenization-text-data-prep.html

原文标题:

Build PyTorch Models Easily Using torchlayers

原文链接:

https://www.kdnuggets.com/2020/04/pytorch-models-torchlayers.html

编辑:黄继彦

校对:林亦霖

译者简介

王琦,中国科学院大学研一在读,研究方向是机器学习与数据挖掘。喜欢探索新事物,是一个热爱学习的人。

翻译组招募信息

工作内容:需要一颗细致的心,将选取好的外文文章翻译成流畅的中文。如果你是数据科学/统计学/计算机类的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友欢迎加入翻译小组。

转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据派THU 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档