[torch 参数更多]torch.onnx.export

torch.onnx.export

torch.onnx.export(model, args, f, export_params=True, verbose=False, training=<TrainingMode.EVAL: 0>, input_names=None, output_names=None, operator_export_type=<OperatorExportTypes.ONNX: 0>, opset_version=None, do_constant_folding=True, dynamic_axes=None, keep_initializers_as_inputs=None, custom_opsets=None, export_modules_as_functions=False)

paddle.onnx.export

paddle.onnx.export(layer, path, input_spec=None, opset_version=9, **configs)

PyTorch 相比 Paddle 支持更多其他参数,具体如下:

参数映射

PyTorch PaddlePaddle 备注
model layer 导出的模型,PyTorch 类型为 torch.nn.Module, torch.jit.ScriptModule 或 torch.jit.ScriptFunction,Paddle 为 Layer 对象,需要转写。
args - 模型参数,Paddle 无此参数,暂无转写方式。
f path PyTorch 为存储模型路径,Paddle 为存储模型的路径前缀,需要转写。
export_params - 是否导出参数,Paddle 无此参数,暂无转写方式。
verbose - 是否输出详细信息,Paddle 无此参数,暂无转写方式。
training - 训练模式,Paddle 无此参数,暂无转写方式。
input_names - 输入节点名称列表,Paddle 无此参数,暂无转写方式。
output_names - 输出节点名称列表,Paddle 无此参数,暂无转写方式。
operator_export_type - 操作导出类型,Paddle 无此参数,暂无转写方式。
opset_version opset_version opset 版本。
do_constant_folding - 是否进行 constant-folding 优化,Paddle 无此参数,暂无转写方式。
dynamic_axes - 是否动态维度,Paddle 无此参数,暂无转写方式。
keep_initializers_as_inputs - 是否增加初始化器到输入,Paddle 无此参数,暂无转写方式。
custom_opsets - 自定义 opset,Paddle 无此参数,暂无转写方式。
export_modules_as_functions - 是否导出模型为 functions,Paddle 无此参数,暂无转写方式。
- input_spec 描述存储模型 forward 方法的输入,PyTorch 无此参数,Paddle 保持默认即可。
- configs 其他用于兼容的存储配置选项,PyTorch 无此参数,Paddle 保持默认即可。

转写示例

参数类型不同

# PyTorch 写法
torch.onnx.export(
    model,
    (
        x,
        {y: z},
        {}
    ),
    "test.onnx.pb"
)

# Paddle 写法
model = Logic()
x = paddle.to_tensor([1])
y = paddle.to_tensor([2])
# Static and run model.
paddle.jit.to_static(model)
out = model(x, y, z=True)
paddle.onnx.export(model, 'pruned', input_spec=[x], output_spec=[out])