Skip to content

Latest commit

 

History

History
111 lines (69 loc) · 5.94 KB

pytorch-models-torchlayers.md

File metadata and controls

111 lines (69 loc) · 5.94 KB

使用 torchlayers 轻松构建 PyTorch 模型

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

评论

根据 在线搜索 和更重要的 PyTorch 采用率的持续增长 来看,PyTorch 继续受到广泛关注。PyTorch 被认为是强大而灵活的,这对研究人员来说是受欢迎的。然而,过去 PyTorch 因缺乏类似 TensorFlow 的 Keras 的简化高级 API 而受到批评。这个情况最近发生了变化。

图示

torchlayers 旨在为 PyTorch 做到 Keras 对 TensorFlow 所做的事情。简洁地由项目开发者定义:

torchlayers 是一个基于 PyTorch 的库,提供 torch.nn 层的自动形状和维度推断 + 当前 SOTA 架构中的附加构建块(例如 Efficient-Net)。

上述操作无需用户干预(除了对 torchlayers.build 的单次调用),类似于 Keras 中的操作。

除了上述的形状和维度推断,torchlayers 还包括类似 Keras 的附加层,例如 [torchlayers.Reshape](https://szymonmaszke.github.io/torchlayers/packages/torchlayers.html?highlight=reshape#torchlayers.Reshape)(在保持批次维度的同时重塑输入张量),包含之前在 ImageNet 竞赛中看到的 SOTA 层(例如 [PolyNet](https://szymonmaszke.github.io/torchlayers/packages/torchlayers.convolution.html?highlight=polynet#torchlayers.convolution.Poly)),并提供一些有用的默认设置,例如卷积核大小(torchlayers 的默认值为 3)。

使用 pip 安装很简单:

pip install --user torchlayers

额外的安装信息(如 Docker 镜像和 GPU)可以在这里找到。完整的 torchlayers 文档 可以在这里找到

torchlayers 的 GitHub 页面提供了一些示例来展示其功能。我喜欢这个 简单的图像和文本分类器! 示例,下面我复制了它的代码。这个示例展示了:

  • torch.nntorchlayers 层的混合使用

  • 形状和维度推断(ConvLinear 输入及 BatchNorm

  • 默认卷积核大小

  • Conv 填充默认设置为 "same"

  • 使用 torchlayers 池化层(GlobalMaxPool,类似于 Keras)

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 函数(例如下面显示的权重初始化)提供一些附加功能,你可以在这里查看更多

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 正在采用 PyTorch... 他们并不孤单

  • PyTorch 1.2 的温和介绍

  • 使用 TensorFlow 和 Keras 进行标记化和文本数据准备


我们的前三大课程推荐

1. Google 网络安全证书 - 快速进入网络安全职业。

2. Google 数据分析专业证书 - 提升你的数据分析技能

3. Google IT 支持专业证书 - 支持你的组织 IT


更多相关主题