网站首页 > 技术文章 正文
李林 编译整理
量子位 报道 | 公众号 QbitAI
Facebook的机器学习框架(之一)PyTorch今天发布了新版本:0.2.0。
这一版本引入了NumPy风格的Broadcasting、Advanced Indexing,增加了高阶梯度和分布式PyTorch。
PyTorch的GitHub新版发布说明中介绍了0.2版的以下新特性:
NumPy风格的Tensor Broadcasting
Broadcasting是NumPy在算数运算中处理不同形状数组的一种方式,在特定条件下,比较小的数组会通过比较大的数组进行“广播”,来获得相应的形状。
PyTorch支持Broadcasting,让它的Tensor arguments无需复制数据,就能自动扩展到相同大小。
向量和变量的Advanced Indexing
Advanced Indexing也是一种NymPy特性。当选择对象obj为非元组序列对象、ndarray(数据类型是整数或布尔时)、至少包含一个序列对象或ndarray的元组时,Advanced Indexing会激活。
NumPy现在部分支持NymPy风格的Advanced Indexing,让用户可以用相同的“[]-style”运算,在向量的每个维度上选择任意索引,包括不邻近的索引和重复索引。
高阶梯度
PyTorch 0.2版本新增的高阶梯度计算支持torch.XXX函数和最流行的nnlayers,在下一版本中可能会支持更多类型。
为了支持高阶梯度,PyTorch 0.2引入了一种编写函数autograd.Function的新形式,向下兼容旧的函数编写形式。
分布式PyTorch
PyTorch推出了torch.distributed包,让用户能在多台机器之间交换tensor,进而支持将神经网络的训练扩展到多台机器上,也支持更大的小批次。
具分布式PyTorch具体能做什么呢?举个例子,它为实现Facebook今年6月发布的论文Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour,提供了基础。
论文地址:https://arxiv.org/abs/1706.02677
distributed包遵循MPI风格编程模型,这意味着可以通过send、recv、all_reduce等函数在节点之间交换tensor。
PyTorch还提供了一个ImageNet训练案例来进行说明:https://github.com/pytorch/examples/tree/master/imagenet
新的nn层
0.2版本有一些新特性:
引入forward_pre_hook,在调用forward函数之前执行用户指定的闭包。
方便访问非叶梯度;
DataParallel支持dicts作为输入。
还引入了一些新的层,例如:
通过F.grid_sample和F.affine_grid实现空间变换网络;
从论文Self-Normalizing Neural Networks(地址:https://arxiv.org/abs/1706.02515)引入了nn.SeLU and nn.AlphaDropout;
从论文Convolutional Sequence to Sequence Learning(地址:https://arxiv.org/abs/1705.03122)引入了nn.GLU;
通过torch.utils.weight_norm来实现权重归一化;
nn.EmbeddingBag:构建词袋模型时,执行一个嵌入后跟Sum或Mean是很常见的,对于可变长度序列,计算嵌入包设计masking。PyTorch 0.2的nn.EmbeddingBag能更有效率地计算嵌入式包,特别是对于可变长度序列。
除此之外,PyTorch 0.2还引入了torch中的新功能,新增几类autograd支持,并修复了一些bug,详情见:
GitHub上的0.2.0版发布说明
https://github.com/pytorch/pytorch/releases/tag/v0.2.0
官方文档
http://pytorch.org/docs/0.2.0/
下载地址:
zip:
https://github.com/pytorch/pytorch/archive/v0.2.0.zip
tar.gz:
https://github.com/pytorch/pytorch/archive/v0.2.0.tar.gz
—— 完 ——
猜你喜欢
- 2024-10-12 神经网络调试:梯度可视化 神经网络 梯度
- 2024-10-12 2021年4月下旬,百度机器学习/数据挖掘/NLP算法工程师面试8道题
- 2024-10-12 使用Scikit-Learn库对Keras模型进行超参数调整
- 2024-10-12 Tensorflow中的卷积神经网络 tensorflow 卷积神经网络
- 2024-10-12 深度学习中的激活函数总结 激活函数原理
- 2024-10-12 「周末AI课堂」SELU和ResNet(代码篇)机器学习你会遇到的“坑”
- 2024-10-12 想降低云服务的花销?或许深度强化学习能帮到你|论文
- 2024-10-12 SELU和ResNet(代码篇)|机器学习你会遇到的“坑”
- 2024-10-12 深度强化学习还能帮你省钱!这项研究要用RL控制云服务开销
- 2024-10-12 SELU和ResNet(理论篇)机器学习你会遇到的“坑”
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)