您的位置:首页 > 其它

PyTorch 1.2 发布,新的TorchScript API

2019-08-13 00:00 1646 查看

上周,PyTorch团队宣布推出PyTorch 1.2。 此版本附带一个新的TorchScript API,具有改进的Python语言覆盖范围,扩展的ONNX导出,标准的nn.Transformer模块等。

以下是PyTorch 1.2中的一些更新:

一个新的TorchScript API

使用TorchScript可以创建可通过PyTorch代码进行序列化和优化的模型。 PyTorch 1.2带来了一个新的“易于使用的TorchScript API”,用于将nn.Module转换为ScriptModules。 torch.jit.script现在将递归地编译它遇到的函数,方法和类。创建ScriptModules的首选方法是torch.jit.script(nn_module_instance),而不是继承自torch.jit.ScriptModule。

通过此更新,某些项目将被视为已弃用,建议开发人员不要在新代码中使用它们。不推荐使用的组件包括 @torch.jit.script_method装饰器,继承自torch.jit.ScriptModule的类,torch.jit.Attribute包装类和 __constants__数组。

此外,TorchScript现在已经改进了对Python语言结构和Python标准库的支持。它支持基于迭代器的构造,例如for..in循环,zip() 和enumerate()。它还支持数学和字符串库以及其他Python内置函数。

完全支持ONNX Opset导出

PyTorch团队与Microsoft合作,为出口ONNX Opset版本7,8,9,10提供全面支持.PyTorch 1.2包括在Opset 10中导出丢失,切片,翻转和插值的功能.ScriptModule经过改进,包括支持多个 输出,张量工厂和元组作为输入和输出。 开发人员还可以注册自己的符号来导出自定义操作,并在导出期间设置输入的动态尺寸。

标准的nn.Transformer

PyTorch 1.2附带一个标准的nn.Transformer模块,允许您根据需要修改属性。 基于论文Attention is All You Need,该模块完全依赖于用于绘制输入和输出之间的全局依赖关系的注意机制。 它的设计使您可以独立使用其各个组件。 例如,您可以使用其nn.TransformerEncoder API而不使用较大的nn.Transformer。

PyTorch 1.2的重大变化

包括 lt, le, gt, ge, eq, ne的比较操作的返回dtype现在更改为torch.bool而不是torch.uint8。

torch.tensor(bool)和torch.as_tensor(bool)的类型更改为torch.bool dtype而不是torch.uint8。

现在删除了一些线性代数函数,以支持重命名的操作。 下面列出了所有已删除的操作及其替代方法,供您快速参考:

 

资料来源:PyTorch

查看PyTorch发行说明以了解更多详细信息。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: