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

百家 作者:数据分析 2020-05-08 14:00:37
作者: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

END


转自:?数据派THU 公众号

版权声明:本号内容部分来自互联网,转载请注明原文链接和作者,如有侵权或出处有误请和我们联系。


合作请加QQ:365242293??

数据分析(ID?:?ecshujufenxi?)互联网科技与数据圈自己的微信,也是WeMedia自媒体联盟成员之一,WeMedia联盟覆盖5000万人群。

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接