文档章节

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

earnpls
 earnpls
发布于 2017/07/11 23:09
字数 1327
阅读 118
收藏 0
点赞 0
评论 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/

© 著作权归作者所有

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

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

技术小能手 ⋅ 06/13 ⋅ 0

win10下安装使用pytorch以及cuda9、cudnn7.0

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

oldpan ⋅ 2017/11/20 ⋅ 0

终于!大家心心念念的PyTorch Windows官方支持来了

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

机器之心 ⋅ 04/25 ⋅ 0

PyTorch 重大更新,0.4.0 版本支持 Windows 系统

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

孔令双 ⋅ 04/25 ⋅ 0

PyTorch 重磅更新,不只是支持 Windows

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

AI科技大本营 ⋅ 04/26 ⋅ 0

业界 | 无缝整合PyTorch 0.4与Caffe2,PyTorch 1.0即将问世

  选自Facebook Research   作者:Bill Jia   机器之心编译   参与:思源、晓坤      在 F8 的第二天中,Facebook 正式宣布 PyTorch1.0 即将与大家见面,这是继一周前发布 0.4....

机器之心 ⋅ 05/03 ⋅ 0

Caffe2 公布与 PyTorch 合并细节:只为提高开发效率

Caffe2 近日在其博客上公布了与 PyTorch 合并的各项细节,文中表示 Caffe2 的开发重点是性能和跨平台部署,而 PyTorch 则专注于快速原型设计和研究的灵活性。二者的组件在过去一年大量被共享...

王练 ⋅ 05/06 ⋅ 0

融合 Caffe2、ONNX 的新版 PyTorch 发布在即,能否赶超 TensorFlow?

雷锋网(公众号:雷锋网) AI 研习社按,上个月,Caffe2 代码正式并入 PyTorch,就在今天,Facebook AI 系统与平台部(AI Infra and Platform)副总 Bill Jia 发文表示,PyTorch 1.0 发布在即,...

思颖 ⋅ 05/03 ⋅ 0

深度概率编程语言 Pyro 0.2 发布,支持 PyTorch 0.4

Pyro 是 Uber AI 实验室开源的一款深度概率编程语言(PPL),基于 Python 与 PyTorch 之上,专注于变分推理,同时支持可组合推理算法。 Pyro 能够实现灵活而富有表现力的深度概率建模,将现代...

王练 ⋅ 04/27 ⋅ 0

pytorch-0.2成功调用GPU:ubuntu16.04,Nvidia驱动安装以及最新cuda9.0与cudnnV7.0配置

前言 从安装ubuntu系统配置pytorch-GPU环境开始就已经走上了不归路,本以为没什么大问题,但其实坑非常的多,在此写上安装过程中遇到的种种问题与大家分享,希望大家少走弯路! 另外要说明,...

oldpan ⋅ 2017/11/06 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

mysql in action / alter table

change character set ALTER SCHEMA `employees` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci ;ALTER TABLE `employees`.`t2` CHARACTER SET = utf8mb4 , COLLAT......

qwfys ⋅ 今天 ⋅ 0

Java 开发者不容错过的 12 种高效工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用...

jason_kiss ⋅ 昨天 ⋅ 0

Linux下php访问远程ms sqlserver

1、安装freetds(略,安装在/opt/local/freetds 下) 2、cd /path/to/php-5.6.36/ 进入PHP源码目录 3、cd ext/mssql进入MSSQL模块源码目录 4、/opt/php/bin/phpize生成编译配置文件 5、 . ./...

wangxuwei ⋅ 昨天 ⋅ 0

如何成为技术专家

文章来源于 -- 时间的朋友 拥有良好的心态。首先要有空杯心态,用欣赏的眼光发现并学习别人的长处,包括但不限于工具的使用,工作方法,解决问题以及规划未来的能力等。向别人学习的同时要注...

长安一梦 ⋅ 昨天 ⋅ 0

Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令...

刘祖鹏 ⋅ 昨天 ⋅ 0

MySQL

查看表相关命令 - 查看表结构    desc 表名- 查看生成表的SQL    show create table 表名- 查看索引    show index from  表名 使用索引和不使用索引 由于索引是专门用于加...

stars永恒 ⋅ 昨天 ⋅ 0

easyui学习笔记

EasyUI常用控件禁用方法 combobox $("#id").combobox({ disabled: true }); ----- $("#id").combobox({ disabled: false}); validatebox $("#id").attr("readonly", true); ----- $("#id").r......

miaojiangmin ⋅ 昨天 ⋅ 0

金山WPS发布了Linux WPS Office

导读 近日,金山WPS发布了Linux WPS Office中文社区版新版本,支持大部分主流Linux系统,功能更加完善,兼容性、稳定性大幅度提升。本次更新WPS将首次在Linux提供专业办公文件云存储服务,实...

问题终结者 ⋅ 昨天 ⋅ 0

springboot2输出metrics到influxdb

序 本文主要研究一下如何将springboot2的metrics输出到influxdb maven <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-bo......

go4it ⋅ 昨天 ⋅ 0

微信小程序 - 选择图片显示操作菜单

之前我分享过选择图片这个文章,但是我在实际开发测试使用中发现一个问题在使用 wx.chooseImage 选择照片显示出第一格是拍照,后面是相册里的图片。这种实现之前说过了,效果如下。 但是你从...

hello_hp ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部