首页 > > > Pytorch 1.2.0 来了
PyTorch 1.2.0 正式发布了!
官方在GitHub上发布更新文档,详细介绍了此次升级在JIT、ONNX、分布式、性能以及前端等方面的大量改进,一起来看看吧。
此次升级有超过1900个commit,包括在JIT、ONNX、分布式、性能以及前端等方面的大量改进。
PyTorch在GitHub中对 1.2.0 版本的详细介绍:
https://github.com/pytorch/pytorch/releases
下面我们一起来了解下这次 PyTorch 1.2.0 版本具体升级、改进了哪些地方。
[JIT]新 TorchScript API
1.2.0 版本包含了一个新的API,它可以使 nn.Module 跟易于转换为 ScriptModule。示例如下:
[JIT]改进了TorchScript Python语言覆盖
在 1.2.0 版本中,TorchScript大大改进了对Python语言构造和Python标准库的支持。亮点包括:
· 提前返回(return)、中断(break)以及继续(continue);
· 基于迭代器的构造,例如 for...in 循环,zip() 和 enumerate();
· NamedTuples;
· 支持 math 和 string 库;
· 支持大多数Python内置函数。
NN Transformer
此次更新添加了一个NN Transformer模块,该模块完全基于注意力机制,反映出输入和输出的全局依赖性。新版本为nn.Transformer 模块设计了独立的组件,所以可以独自使用,比如,nn.TransformerEncoder可以独自使用,无需更大的nn.Transformer。
数据类型支持的改进与变化
1) 比较操作返回的数据类型由 torch.uint8 变为 torch.bool
2) __invert__ / ~: 现在改为调用 torch.bitwise_not ,而不是1 – tensor并支持所有整型和布尔数据类型,而不仅仅是支持 torch.uint8。
3) torch.tensor(bool)和torch.as_tensor(bool) :现在指的是 torch.bool数据类型,而不是torch.uint8。
4) nn.BatchNorm{1,2,3}D: gamma (weight) :现在初始化至所有的1 ,不再U(0, 1)上随机初始化。
5) 移除了一些不适用的线性代数操作,具体见下表,左列为被移除的项目,右列为新增的代替项目:
稀疏张量的一些改进
1) 全面改变张量的稀疏度,不再支持.data
2) 对密集张量构建器的本地修改将不再修改稀疏张量本身
3) 向稀疏.grad累加密集梯度将不再保留Python目标身份。
nn.utils.convert_sync_batchnorm被替换为
nn.SyncBatchNorm.convert_sync_batchnorm (18787)
错误检查
1) torch.addcmul 和 torch.lerp 操作器现在对输出张量形态要求更高,如果输出张量被用作输入之一,则不再允许其改变大小。
2) 变量版本跟踪性能改进
新特性
包括张量类型支持、NN Package、操作器、Optim Package、分布式Package、可迭代数据集、Tensorboard Package等
性能改进
改进内容包括分布式、Tensorboard、Numpy兼容性、JIT、C++ API、MKLDNN张量等。
Bug修正:
包括torch.nn的bug修正、分布式bug修正、JIT bug修正和C++前端bug修正等。
一些不再使用的功能
1) torch.uint8张量掩模被移除,改为支持 torch.bool张量掩模。
2) 之前版本遗留的autograd函数(不包括静态前向法的函数) 不再使用
3) torch.gels 被重命名为torch.lstsq,torch.gels 将不再使用。
性能提升与文档更新
Torch.NN 性能提升。Torch.NN、贡献者、Build、TensorBoard和TorchHUB文档更新。
对ONNX的支持进一步扩展
支持更多的ONNX 操作集
对脚本模块的扩展支持
支持导出更多的Torch操作器到ONNX
扩展现有的导出逻辑
对导出的ONNX图进行了优化
其他一些bug修正和改进
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4729/viewspace-3141776/ ,如需转载,请注明出处,否则将追究法律责任。