Source code for onnx.version_converter

# SPDX-License-Identifier: Apache-2.0
"""onnx version converter

This enables users to convert their models between different opsets within the
default domain ("" or "ai.onnx").
"""

import onnx.onnx_cpp2py_export.version_converter as C
from onnx import ModelProto, load_from_string


[docs]def convert_version(model: ModelProto, target_version: int) -> ModelProto: """Apply the version conversion on the serialized ModelProto. Arguments: input (ModelProto): model target_version (int): target opset version Returns: return (ModelProto) converted model Raises Exceptions: RuntimeError when some necessary conversion is not supported Supported adapters: - Add from Opset 7 to Opset 6 - Add from Opset 6 to Opset 5 - Add from Opset 6 to Opset 7 - Add from Opset 5 to Opset 6 - Mul from Opset 6 to Opset 7 - Mul from Opset 7 to Opset 6 - Mul from Opset 6 to Opset 5 - Mul from Opset 5 to Opset 6 - Gemm from Opset 7 to Opset 6 - Gemm from Opset 6 to Opset 5 - Gemm from Opset 6 to Opset 7 - Gemm from Opset 5 to Opset 6 - Relu from Opset 6 to Opset 5 - Relu from Opset 5 to Opset 6 - BatchNorm from Opset 7 to Opset 6 - BatchNorm from Opset 6 to Opset 7 - BatchNorm from Opset 6 to Opset 5 - BatchNorm from Opset 5 to Opset 6 - Concat from Opset 4 to Opset 3 - Concat from Opset 3 to Opset 4 - Reshape from Opset 5 to Opset 4 - Reshape from Opset 4 to Opset 5 - Sum from Opset 7 to Opset 8 - Sum from Opset 8 to Opset 7 - Sum from Opset 6 to Opset 5 - Sum from Opset 5 to Opset 6 - MaxPool from Opset 8 to Opset 7 - MaxPool from Opset 7 to Opset 8 - AveragePool from Opset 7 to Opset 6 - AveragePool from Opset 6 to Opset 7 - Dropout from Opset 7 to Opset 6 - Dropout from Opset 6 to Opset 5 - Dropout from Opset 6 to Opset 7 - Dropout from Opset 5 to Opset 6 - RNN from Opset 13 to Opset 14 - RNN from Opset 14 to Opset 13 - GRU from Opset 13 to Opset 14 - GRU from Opset 14 to Opset 13 - LSTM from Opset 13 to Opset 14 - LSTM from Opset 14 to Opset 13 Unsupported adapters: - Min from Opset 8 to Opset 7 - Min from Opset 7 to Opset 8 - Min from Opset 6 to Opset 5 - Min from Opset 5 to Opset 6 - Mean from Opset 8 to Opset 7 - Mean from Opset 7 to Opset 8 - Mean from Opset 6 to Opset 5 - Mean from Opset 5 to Opset 6 - Max from Opset 8 to Opset 7 - Max from Opset 7 to Opset 8 - Max from Opset 6 to Opset 5 - Max from Opset 5 to Opset 6 - Xor from Opset 6 to Opset 7 - Xor from Opset 7 to Opset 6 - Upsample from Opset 6 to Opset 7 - Upsample from Opset 7 to Opset 6 - Sub from Opset 6 to Opset 7 - Sub from Opset 7 to Opset 6 - Sub from Opset 6 to Opset 5 - Sub from Opset 5 to Opset 6 - RNN from Opset 6 to Opset 7 - RNN from Opset 7 to Opset 6 - Pow from Opset 6 to Opset 7 - Pow from Opset 7 to Opset 6 - PRelu from Opset 6 to Opset 7 - PRelu from Opset 7 to Opset 6 - PRelu from Opset 6 to Opset 5 - PRelu from Opset 5 to Opset 6 - Or from Opset 6 to Opset 7 - Or from Opset 7 to Opset 6 - Less from Opset 6 to Opset 7 - Less from Opset 7 to Opset 6 - LSTM from Opset 6 to Opset 7 - LSTM from Opset 7 to Opset 6 - Greater from Opset 6 to Opset 7 - Greater from Opset 7 to Opset 6 - GRU from Opset 6 to Opset 7 - GRU from Opset 7 to Opset 6 - GRU from Opset 3 to Opset 2 - GRU from Opset 2 to Opset 3 - Equal from Opset 6 to Opset 7 - Equal from Opset 7 to Opset 6 - Div from Opset 6 to Opset 7 - Div from Opset 7 to Opset 6 - Div from Opset 6 to Opset 5 - Div from Opset 5 to Opset 6 - And from Opset 6 to Opset 7 - And from Opset 7 to Opset 6 - And from Opset 6 to Opset 5 - And from Opset 5 to Opset 6 - Tile from Opset 6 to Opset 5 - Tile from Opset 5 to Opset 6 - Sqrt from Opset 6 to Opset 5 - Sqrt from Opset 5 to Opset 6 - Sigmoid from opset 6 to opset 5 - Sigmoid from opset 5 to opset 6 - Selu from opset 6 to opset 5 - Selu from opset 5 to opset 6 - Reciprocal from opset 6 to opset 5 - Reciprocal from opset 5 to opset 6 - Neg from opset 6 to opset 5 - Neg from opset 5 to opset 6 - Log from opset 6 to opset 5 - Log from opset 5 to opset 6 - LeakyRelu from opset 6 to opset 5 - LeakyRelu from opset 5 to opset 6 - InstanceNormalization from opset 6 to opset 5 - InstanceNormalization from opset 5 to opset 6 - HardSigmoid from opset 6 to opset 5 - HardSigmoid from opset 5 to opset 6 - Floor from opset 6 to opset 5 - Floor from opset 5 to opset 6 - Exp from opset 6 to opset 5 - Exp from opset 5 to opset 6 - Elu from opset 6 to opset 5 - Elu from opset 5 to opset 6 - Clip from opset 6 to opset 5 - Clip from opset 5 to opset 6 - Ceil from opset 6 to opset 5 - Ceil from opset 5 to opset 6 - Cast from opset 6 to opset 5 - Cast from opset 5 to opset 6 - Abs from opset 6 to opset 5 - Abs from opset 5 to opset 6 - Split from opset 2 to opset 1 - Split from opset 1 to opset 2 - Pad from opset 2 to opset 1 - Pad from opset 1 to opset 2 - LpPool from opset 2 to opset 1 - LpPool from opset 1 to opset 2 - GlobalLpPool from opset 2 to opset 1 - GlobalLpPool from opset 1 to opset 2 """ if not isinstance(model, ModelProto): raise ValueError( f"VersionConverter only accepts ModelProto as model, incorrect type: {type(model)}" ) if not isinstance(target_version, int): raise ValueError( f"VersionConverter only accepts int as target_version, incorrect type: {type(target_version)}" ) model_str = model.SerializeToString() converted_model_str = C.convert_version(model_str, target_version) return load_from_string(converted_model_str)
ConvertError = C.ConvertError