正式支持Transformer与TensorBoard,PyTorch 1.2新鲜出炉

机器之心报道

参与:李亚洲、杜伟

在 PyTorch 上,你可以像调用卷积一样调用 Transformer 了。

PyTorch 作为 Facebook 开发和维护的一个开源框架,近来的发展势头相当强劲。自 2017 年初首发以来,PyTorch 灵活、动态的编程环境及对用户友好的界面使其非常适用于快速实验,因此在社区内迅速发展壮大。

2018 年 12 月,PyTorch 1.0 正式版发布,解决了包括可重用、性能、编程语言和可扩展性等在内的一系列问题。

今日,PyTorch 发布最新版本,做了一系列更新,包括正式支持 Transformer、TensorBoard 等。

正式支持 Transformer 与 TensorBoard

基于论文《Attention is All You Need》,PyTorch 1.2 版本加入了标准的 nn.Transformer 模块。nn.Transformer 模块完全依赖注意机制描述输入和输出之间的全局依赖关系。nn.Transformer 模块的组件是单独设计的,以便于被分开使用。例如,没有更大的 nn.Transformer 的情况下,nn.TransformerEncoder 可被自身使用。新的 API 包括:

现在,简单的输入 from torch.untils.tensorboard import SummaryWriter 就能启动 TensorBoard,它已经不再是实验版了,这就表示 PyTorch 终于正式支持 TensorBoard 啦。

一旦我们安装了 TensorBoard,PyTorch 的这项新 API 就会将模型和指标记录到 TensorBoard UI 的目录中,并进行可视化。它对所有基于 PyTorch、Caffe 2 的模型和张量都支持数量、图像、直方图、图和嵌入可视化。

其它重要更新

新的 TorchScript API

PyTorch 1.2 版本为 nn.Modules 转换成 ScriptModules 提供了新的、易用的 API。简单用例如下:

torch.jit.script() 将尝试以递归形式编译指定的 nn.Module,其中包括调用自 forward() 的任何子模块或方法。相关变更情况以及如何迁移详见《migration guide》。

提升 TorchScript Python 语言覆盖范围

在 PyTorch 1.2 版本中,TorchScript 显著提升了自身对 Python 语言结构和 Python 标准库的支持。亮点包括如下:

  • 提前返回、终止和继续;
  • 基于迭代器的结构,如 for..in 回路、zip() 和 enumerate();
  • NamedTuples;
  • 支持 math 和 string 库
  • 支持大多数 Python 内部函数

扩展 Onnx 导出

通过与微软合作,PyTorch 1.2 版本全面支持导出 ONNX Opset 版本 7 (V1.2)、版本 8(v1.3)、版本 9(v1.4) 以及版本 10 (v1.5)。PyTorch 1.2 还增强了常量折叠通道(constant folding pass),以支持 ONNX 最新可用版本 Opset 10。此外,用户现在可以注册自己的符号(symbolic)以导出自定义操作,同时可以在导出时指定输入的动态维度。重大改进之处如下:

  • 支持多个 Opsets 版本,包括 Opset 10 版本中导出 dropout、slice、flip 和 interpolate;
  • 改进 ScriptModule,包括支持多输出、张量 factory 以及作为输入和输出的元组;
  • 支持 10 多个额外的 PyTorch 操作符,包括导出自定义操作符。

参考链接:https://github.com/pytorch/pytorch/releases

原文发布于微信公众号 - 相约机器人(xiangyuejiqiren)

原文发表时间:2019-08-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券