文档章节

Pytorch v0.1.12版本发布,添加CUDA的Sparse支持

earnpls
 earnpls
发布于 2017/07/11 23:09
字数 1327
阅读 137
收藏 0

API更改

  1. torch.range被弃用,赞成torch.arangenumpy和python范围一致。
  2. 在稀疏的传感器上,contiguous更名为现在,coalesce并且coalesce现在已经不合适。 (提醒Sparse API仍然是实验性和演进性的,所以我们不提供后向兼容性)。

新功能

新层次和功能

  1. torch.topk现在支持所有CUDA类型,不只是torch.cuda.FloatTensor。
  2. 增加了三路排名丢失:nn.TripletMarginLoss 添加每个实例规范化层:nn.InstanceNorm1d,1. nn.InstanceNorm2d,nn.InstanceNorm3d 每个通道被视为一个实例进行归一化,并且均值减去和标准化完成。当处理较大的图像和更小的迷你批次时,这对BatchNorm喜欢效果是有用的。
  3. nn.ZeroPad2d并nn.ConstantPad2d添加。
  4. nn.Bilinear 被添加,它计算 Y = X1 X2 + b

负尺寸将从最后一维度索引张量。

使用维度参数的每个单个函数也将允许采取负面维度。

负尺寸将从最后一维度索引张量。

例如:

x = torch.randn(10, 20, 30)
y = torch.mean(x, dim = -1)

在这里,由于x具有3个维度,而dim = -1是最后一个维度,即dim=3采取平均值。

具有维参数的函数是:

narrow, transpose, size, cat, chunk, gather, index_select, split, squeeze,
stack, unbind, unsqueeze, cumprod, cumsum, mean, median, mode, norm, prod, std,
sum, var, kthvalue, max, min, sort, topk, renorm,
index_add, index_copy, index_fill, scatter, select, unfold

CUDA支持sparse传感器,CPU速度更快

现在torch.sparse也支持API 的一部分torch.cuda.sparse.*Tensor

CUDA支持的功能有:

sparse_mask, to_dense, coalesce, transpose, spaddmm
spcadd, mul, div, cadd, csub, cmul

nn.Embedding现在支持sparse,即使在使用sparse=True这些sparse函数的CUDA(带标志)上也是如此。

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

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

在一个很快被黑客入侵的@martinraison嵌入分类器训练脚本我们看到CUDAsparse表现以及CUDA密集:https : //gist.github.com/martinraison/1e7c18c6f6eda87f1cb4995b0e6a22a5

不同处理时间对比:

  • CPU CUDA
    Dense 10 0.86
    Sparse 0.15 0.13

named_parameters来过滤特定的参数类型

假设您想为模型的所有参数添加重量衰减,除了偏差。您如何只获得模型的偏见?为此 引入了nn.Module.named_parameters。 它加入named_childrennamed_modules帮助您过滤模型的特定属性。

过滤模型的偏差并给它们weight_decay为0的示例:

import torch
import torch.nn as nn
import torch.optim as optim
m = nn.Sequential(
      nn.Linear(10, 20),
      nn.ReLU(),
      nn.Linear(20, 20),
      nn.ReLU(),
    )
weights, biases = [], []
for name, p in m.named_parameters():
   if 'bias' in name:
       biases += [p]
   else:
       weights += [p]

optim.SGD([
  {'params': weights},
  {'params': biases, weight_decay=0}
], lr=1e-2, momentum=0.9, weight_decay=1e-5)

性能改进

  1. cumsum并且cumprod在适当的情况下通过使用某些推力原语在GPU上显着加快。
  2. LSTMCell并且GRUCell现在在GPU上通过融合内核显着更快
  3. CuDNN的默认算法已经更改,PRECOMP_GEMM这是一个 更快的算法,需要一小部分工作空间。以前,它曾经 是IMPLICIT_GEMM零工作空间,但是显着较慢。
  4. 通过将批次直接整理到共享内存中,数据加载器的5%至10%的改进。
  5. 现在,SVD通过分频(sgesdd)在GPU上进行计算,可以提供2x至5x的加速。
  6. 常用的功能expand已被移至C,以便在较小型号中具有更好的性能。

Bug修复

  1. 对大范围的THNN功能增加了对重量和偏差的连续检查
  2. random_当指定下限和上限时,使范围正确
  3. parallel_apply 现在可以拿出不可争议的论据
  4. gradDot功能中正确重塑(输入不必是1D矢量...)
  5. 添加 Variable.type_as
  6. 统一参数名称normrenorm拥有p=norm_typedim=dim
  7. btrisolve 工作在CPU双打
  8. 通过实现固定的torch.nn.Moduleipython autocomplete __dir__
  9. device_ids现在可以None再次F.data_parallel使用所有可用的GPU
  10. BatchNorm(<5.1.10)Dilation(6.0.20)中的解决方法cudnn错误
  11. Conv1d CPU中填补错误修复
  12. remainder并且cremainder对于整数类型是固定的
  13. 固定存储器泄漏btrisolvegetri
  14. 如果由于任何异常,nn.Module的源不能被检索,则将 序列化处理为非致命的
  15. collate_fn 现在保留numpy数组的类型
  16. is_tensoris_storage现在是固定的旧式Python类
  17. torch.cat 现在支持关键字参数
  18. CUDA集体支持的合并,但输入都被假定为相同的Tensor类型。这是固定的
  19. 修复autograd中的死锁错误,因为在特定的,linux发行版(特别是ArchLinux)中有一个基本的glibc错误
  20. abs现在固定为charshortcuda类型
  21. torch.diag在给出维度参数时修正自动格式
  22. 在CPU上修复分组卷积 bias=False
  23. 揭露dilated卷积ConvTranspose*d
  24. 修正了一个错误的HingeEmbeddingLoss地方margin现在可以通过kwargs指定

改进的错误消息

  1. 当没有CUDA设备可用时修复错误和消息。

下载

源代码(zip)

源代码(tar.gz)

 

在这里,我整理发布了Pytorch中文文档,方便大家查询使用,同时也准备了中文论坛,欢迎大家学习交流!

Pytorch中文文档

Pytorch中文论坛

Pytorch中文文档已经发布,完美翻译,更加方便大家浏览:

Torch中文网:https://ptorch.com/

Pytorch中文网:https://ptorch.com/

Pytorch中文文档:https://ptorch.com/docs/1/

本文转载自:https://ptorch.com/news/21.html

共有 人打赏支持
earnpls
粉丝 5
博文 26
码字总数 74
作品 0
昌平
程序员
一文读懂PyTorch张量基础(附代码)

本文介绍了PyTorch中的Tensor类,它类似于Numpy中的ndarray,它构成了在PyTorch中构建神经网络的基础。 我们已经知道张量到底是什么了,并且知道如何用Numpy的ndarray来表示它们,现在我们看...

技术小能手
06/13
0
0
win10下安装使用pytorch以及cuda9、cudnn7.0

以后文章更新在 https://oldpan.me 中 pytorch是一个优雅的深度学习库,相比TensorFlow更年轻也更充满潜力,在官方的介绍中pytorch只支持linux和mac,但其实windows也是可以安装以及正常使用...

oldpan
2017/11/20
0
0
终于!大家心心念念的PyTorch Windows官方支持来了

  机器之心整理   参与:机器之心编辑部      五个小时前,PyTorch 官方 GitHub 发布 0.4.0 版本,大家心心念念的 Windows 支持终于来了。      GitHub 发布https://github.com/...

机器之心
04/25
0
0
PyTorch 重大更新,0.4.0 版本支持 Windows 系统

雷锋网(公众号:雷锋网) AI 研习社最新消息,PyTorch 官方发布 0.4.0 版本,该版本的 PyTorch 有多项重大更新,其中最重要的改进是支持 Window 系统。 2017 年初,Facebook 在机器学习和科学...

孔令双
04/25
0
0
PyTorch 重磅更新,不只是支持 Windows

翻译 | 林椿眄 出品 | AI 科技大本营(公众号ID:rgznai100) 这次版本的主要更新一些性能的优化,包括权衡内存计算,提供 Windows 支持,24个基础分布,变量及数据类型,零维张量,张量变量...

AI科技大本营
04/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

React 服务器渲染原理解析与实践

网盘下载地址 React 服务器渲染原理解析与实践 本套课程,讲解了React中SSR技术的整个搭建思路及流程,完整的从原理上讲清楚了SSR的概念,重点在于讲解编写SSR框架遇到的各种知识点,以及细节...

qq__2304636824
35分钟前
0
0
sourcetree 离线免注册登录安装教程

Sourcetree是一个优秀的git可视化管理工具,深受开发者喜爱Sourcetree官网,但是在安装时需要谷歌账户登录,需要翻qiang才可以,此一点一直被人们所诟病。今天本教程就为大家提供离线免登陆安...

QQZZFT
今天
1
0
使用 PostgreSQL 解决一个实际的统计分析问题

使用 PostgreSQL 解决一个实际的统计分析问题作者:老农民(刘启华)Email: 46715422@qq.com 之前有个朋友扔给我一个奇葩需求,他们公司之前做了一批问卷调查,全部都是统一格式的excel...

新疆老农民
今天
8
0
TypeScript基础入门之高级类型的映射类型

转发 TypeScript基础入门之高级类型的映射类型 高级类型 映射类型 一个常见的任务是将一个已知的类型每个属性都变为可选的: interface PersonPartial {    name?: string;    age?...

durban
今天
1
0
Dubbo源码分析(6):Dubbo内核实现之基于SPI思想Dubbo内核实现

SPI接口定义 定义了@SPI注解 package com.alibaba.dubbo.common.extension; import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.lang.an......

郑加威
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部