Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

李亚洲、杜伟报道

正式支持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

入门PyTorch版本1.2.0
2
相关数据
TensorBoard技术

一个信息中心,用于显示在执行一个或多个 TensorFlow 程序期间保存的摘要信息。

张量技术

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

推荐文章
暂无评论
暂无评论~