PyTorch 最新版发布:API 变动,增加新特征,多项运算和加载速度提升

【新智元导读】PyTorch 发布了最新版,API 有一些变动,增加了一系列新的特征,多项运算或加载速度提升,而且修改了大量bug。官方文档也提供了一些示例。

API 改变

  • torch.range 已被弃用,取代的是 torch.arange,这与 numpy 和 python 范围一致。
  • 在稀疏张量上,contiguous 被重命名为 coalesce,coalesce 已经不合适。(注意 Sparse API 仍然是实验性而且在演变中,所以我们不提供向后兼容性)。

新的特征

新的层和函数

  • torch.topk 现在支持所有 CUDA 类型,不仅是 torch.cuda.FloatTensor。
  • 增加了一个 三路排序损失:nn.TripletMarginLoss
  • 增加了每个实例的归一化层:nn.InstanceNorm1d, nn.InstanceNorm2d, nn.InstanceNorm3d 每个通道都被作为一个实例进行归一化处理,并进行均值消减和标准差。这在处理需要类似 BatchNorm 效果的较大的图像和较小的 mini-batches 时很有用。
  • 增加了 nn.ZeroPad2d 和 nn.ConstantPad2d
  • 增加了 nn.Bilinear,计算 Y = X1 * W * X2 + b

支持所有函数的负维

使用维度参数的每个函数也允许采取负维(negative dimensions)。负维将索引上个维度的张量。

例如:

这里,由于x具有3维,并且dim = -1,因此最后一个维度,即 dim = 3 被采用来得到平均值。

具有维度参数的函数有:

CUDA 支持稀疏张量,更快的 CPU sparse

新版本中 torch.sparse API 的一部分也支持 torch.cuda.sparse。* Tensor。

CUDA 支持的函数有:

利用这些稀疏函数,nn.Embedding 现在也在 CUDA 上支持 sparse(使用 sparse = True 标志)。

一种新的混合矩阵乘法 hspmm,将稀疏矩阵与密集矩阵相乘,并以混合张量的形式(即1个稀疏维度,1个密集维度)返回1个矩阵。

几个CPU稀疏函数具有更高效的实现。

这里有一个嵌入式分类器训练脚本,作者是@martinraison,我们可以对比 CUDA sparse 和 CUDA dense 的表现。(http://t.cn/RaZcltA

named_parameters 过滤特定的参数类型

假设你想为模型除 biases 外的所有参数增加权重衰减(weight decay),怎样只获得模型的 biases?

这里我们引入了 nn.Module.named_parameters,它结合 named_children 和 named_modules 来帮助过滤模型的特定属性。

例子:过滤一个模型的 biases, weight_decay 为0

性能提升

  • 在适当的情况下,通过使用一些 thrust primitives,cumsum 和 cumprod 在GPU上显着加快了。
  • 通过一个 fused kernel,LSTMCell 和 GRUCELL 在GPU上显着加快了。
  • CuDNN 的默认算法更改为 PRECOMP_GEMM,这是一个更快的算法,需要的工作空间很小。这个之前是 IMPLICIT_GEMM,占用的工作空间为0,但是慢很多。
  • 通过将 batches 直接整到共享内存中,数据加载速度提升了 5%~10%。
  • 通过分治法(sgesdd)在 GPU 上计算 SVD,加速了2~5倍。
  • 常用的函数 expand 移到 C,在较小的模型中具有更好的性能。

Bug 修复

  • Added contiguous checks on weight and bias for a large range of THNN functions
  • make the range of random_ correct when both lower and upper bound are specified
  • parallel_apply now can take arguments that are unhashable
  • Reshape grad correctly in the Dot function (inputs don't have to be 1D vectors...)
  • Added Variable.type_as
  • Unify argument names of norm and renorm to have p=norm_type, dim=dim
  • btrisolve works on CPU doubles
  • ipython autocomplete for torch.nn.Module fixed via implementing __dir__
  • device_ids can now be None again in F.data_parallel and will use all available GPUs
  • workaround cudnn bugs in BatchNorm (<5.1.10) and Dilation (6.0.20)
  • Padding bugfix in Conv1d CPU
  • remainder and cremainder are fixed for integer types
  • fix memory leak in btrisolve and getri
  • If nn.Module's source cant be retrieved because of any exception,
  • handle serialization to be non-fatal
  • collate_fn now retains the type of the numpy array
  • is_tensor and is_storage are now fixed for old-style Python classes
  • torch.cat now supports keyword arguments
  • CUDA collectives supported coalescing, but the inputs were all assumed
  • to be of the same Tensor type. This is fixed.
  • Fix a deadlock bug in autograd because of an underlying glibc bug in specific
  • linux distros (ArchLinux in particular)
  • abs is now fixed for char and short cuda types
  • fix torch.diag autograd when giving a dimension argument
  • fix grouped convolution on CPU when bias=False
  • expose dilated convolutions for ConvTranspose*d
  • Fix a bug in HingeEmbeddingLoss where margin can now be specified via kwargs

下载源码:https://github.com/pytorch/pytorch/releases

原文发布于微信公众号 - 新智元(AI_era)

原文发表时间:2017-05-04

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏落影的专栏

OpenGL光照学习以及OpenGL4环境

前言 最近稍有空闲,整理下之前学习光照的笔记,以及在配置OpenGL4环境过程中遇到的问题。 光照 1、模拟灯光 模拟灯光:通过GPU来计算场景中的几何图...

3997
来自专栏数说戏聊

Tableau基础知识1.文件与数据1.1 Tableau文件类型2.制表3.绘图

1152
来自专栏IT派

从框架优缺点说起,这是一份TensorFlow入门极简教程

这一系列教程分为 6 部分,从为什么选择 TensorFlow 到卷积神经网络的实现,介绍了初学者所需要的技能。机器之心在本文介绍了 PyTorch 和 Caf...

1562
来自专栏CreateAMind

神经网络图灵机(Neural Turing Machines, NTM)论文完整翻译

1354
来自专栏有趣的Python

14- 深度学习之神经网络核心原理与算法-TensorBoard使用

1724
来自专栏绿巨人专栏

机器学习实战 - 读书笔记(04) - 朴素贝叶斯

2977
来自专栏人工智能

Redis-ML简介(第5部分)

原文地址:https://dzone.com/articles/an-introduction-to-redis-ml-part-five-redis-labs

9988
来自专栏吉浦迅科技

DAY19:阅读纹理内存之Texture Gather

3274
来自专栏机器之心

从框架优缺点说起,这是一份TensorFlow入门极简教程

2298
来自专栏python读书笔记

python 数据分析基础 day19-使用statsmodels进行逻辑回归

今天是读《python数据分析基础》的第19天,读书笔记内容为使用statsmodels进行逻辑回归。 以下代码将按数据清洗、训练模型、得出测试集的预测值这三...

1.3K7

扫码关注云+社区