Pytorch 0.3.0 发布:新增张量函数,支持模型移植

根据官方文档的介绍,此次增加了多个函数和功能,多方面的性能均实现提升。

重大变更

0.3 版本中删掉了 Variable.reinforce() 等随机函数,因为它们的功能有限,并且会影响到性能。设置随机函数的初衷是为了避免采样值的 book-keeping,在实际中,由于各种各样的原因,用户的代码中仍然会包括 book-keeping。他们引入了 torch.distributions 包来代替随机函数。

之前的代码如下:

probs = policy_network(state)
action = probs.multinomial()
next_state, reward = env.step(action)
action.reinforce(reward)
action.backward()

现在的代码如下:

probs = policy_network(state)
# NOTE: categorical is equivalent to what used to be called multinomial
m = torch.distributions.Categorical(probs)
action = m.sample()
next_state, reward = env.step(action)
loss = -m.log_prob(action) * reward
loss.backward()

新的功能

1、目前,有些损失函数能直接计算 mini-batch 中每个 sample 的损失值。

2、构建了一个 in-built Profiler,能对模型进行瓶颈分析,这个 Profiler 同时支持 CPU 和 CUDA 模型。

更多信息可以参见 http://pytorch.org/docs/0.3.0/autograd.html#profiler

3、增加 Higher order gradients 模块,支持如下层:

  • ConvTranspose, AvgPool1d, AvgPool2d, LPPool2d, AvgPool3d, MaxPool1d, MaxPool2d, AdaptiveMaxPool, AdaptiveAvgPool, FractionalMaxPool2d, MaxUnpool1d, MaxUnpool2d, nn.Upsample, ReplicationPad2d, ReplicationPad3d, ReflectionPad2d
  • PReLU, HardTanh, L1Loss, SoftSign, ELU, RReLU, Hardshrink, Softplus, SoftShrink, LogSigmoid, Softmin, GLU
  • MSELoss, SmoothL1Loss, KLDivLoss, HingeEmbeddingLoss, SoftMarginLoss, MarginRankingLoss, CrossEntropyLoss
  • DataParallel

4、优化器

  • optim.SparseAdam:能实现适用于稀疏张量的简单亚当算法
  • 优化器中增加了 add_param_group 函数,能在构建好的优化器中增加新的参数组。

除此之外,还增加了新的张量函数和功能,在新版本中,能通过 ONNX 将模型迁移到其他框架上。另外,在加速方面,重写 gpu kernel 之后,softmax 和 log_softmax 的速度能实现 4-256 倍的提升;在分布式 AllReduce 中,能实现 2.5-3 倍的性能提升;torch.norm 函数的 backward 能实现 1.5 倍的加速;pack_padded_sequence 的性能也有提升。

原文发布于微信公众号 - BestSDK(bestsdk)

原文发表时间:2017-12-08

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ATYUN订阅号

使用Tensor2Tensor和10行代码训练尖端语言翻译神经网络

有许多库可以帮助人们构建深度学习应用程序,但如果想使用最新架构的最先进模型和最少的代码,有这样一个API脱颖而出:Google的Tensor2Tensor。我通...

31220
来自专栏深度学习之tensorflow实战篇

数据挖掘PageRank算法(网页排名原理)及Map-Reduce实现

方法/步骤 1 一、什么是pagerank PageRank的Page可是认为是网页,表示网页排名,也可以认为是Larry Page(google...

47590
来自专栏数据小魔方

带实际执行进度的甘特图

今天要跟大家分享的图标是带实际执行进度的甘特图! ▽▼▽ 由于本图所用到的技巧和思路特别复杂,过程相对繁琐,所以本案例的介绍会省略掉很多细节性的步骤,否则图文会...

38950
来自专栏华章科技

以卖香蕉为例,从4个方面了解SQL的数据汇总

导读:面对一个新数据集时,人们往往会关心数据中的异常值、数据的分布形式、行列之间的关系等。SQL是一种专为数据计算设计的语言,其中已经内置了许多数据汇总函数,也...

9530
来自专栏数据小魔方

R语言可视化——数据地图应用(东三省)

今天是一个案例应用,采用东北三省地图进行离散颜色映射,让大家感受下R语言在地理信息空间可视化方面的强大功能,同时也会对之前强调过的地图配色技巧进行应用。 加载工...

1K50
来自专栏机器学习和数学

[Tensorflow] TensorFlow之Hello World!(1)

哇!今天挺开心的,30天的时间,19篇文章,2459人阅读,5313人次阅读!今天开通的原创标识,恩!除了激动,就是非常感谢大家的支持!感谢大家的支持!大家的支...

35460
来自专栏章鱼的慢慢技术路

用OpenGL实现粒子的随机运动

17150
来自专栏数据魔术师

运筹学教学|运输问题代码分享(C++代码及详细注释)

经过了长时间的学习……小编终于学会了运输问题(Transportation Problem),可以说是很骄傲了!然而……今天老板突然给了小编一个规模巨大的问题去...

59370
来自专栏ACM算法日常

除以3,乘以2(STL+排序)- Codeforces 997D

Polycarp likes to play with numbers. He takes some integer number x, writes it d...

12220
来自专栏PPV课数据科学社区

数据挖掘系列(4)使用weka做关联规则挖掘

前面几篇介绍了关联规则的一些基本概念和两个基本算法,但实际在商业应用中,写算法反而比较少,理解数据,把握数据,利用工具才是重要的,前面的基础篇是对算法的理解,这...

51960

扫码关注云+社区

领取腾讯云代金券