Skip to main content

OnnxModel

An ONNX model file as an editable graph: open or create one, or build one from a ModelGraph (from_graph), inspect and edit it, save it, or compile() it into a ModelGraph.

ir_version (property)​

The ONNX IR version.

num_initializers (property)​

The initializer (graph constant) count.

num_nodes (property)​

The node count.

opset (property)​

The ai.onnx opset version.

__init__​

__init__(self, /, *args, **kwargs)

Initialize self. See help(type(self)) for accurate signature.

add_initializer​

add_initializeradd_initializer(self, value: clika_runtime._core.Tensor) -> str

add_initializer(self, value: clika_runtime._core.Tensor) -> str

add_initializer(value) -> str

Create a graph constant from a tensor's bytes; returns the generated initializer name.

add_input​

add_inputadd_input(self, name: str, dtype: clika_runtime._core.DataType, shape: collections.abc.Sequence[int]) -> str

add_input(self, name: str, dtype: clika_runtime._core.DataType, shape: collections.abc.Sequence[int]) -> str

add_input(name, dtype, shape) -> str

Register a graph input; any dim <= 0 declares a dynamic dimension. Returns the tensor name.

add_node​

add_nodeadd_node(self, op_type: str, inputs: collections.abc.Sequence[str], num_outputs: int = 1, attrs: dict = {}, domain: str = '', output_names: collections.abc.Sequence[str] = []) -> list[str]

add_node(self, op_type: str, inputs: collections.abc.Sequence[str], num_outputs: int = 1, attrs: dict = {}, domain: str = '', output_names: collections.abc.Sequence[str] = []) -> list[str]

add_node(op_type, inputs, num_outputs=1, attrs={}, domain='', output_names=()) -> list[str]

Append a node: positional input tensor names in, generated (or caller-named) output names back. Attributes ride a dict of int / float / str / list values. A domain other than the standard one must be declared first with add_opset_domain(); a node under a domain the model does not import raises InvalidArgumentError and leaves the model as it was.

add_opset_domain​

add_opset_domainadd_opset_domain(self, domain: str, version: int) -> None

add_opset_domain(self, domain: str, version: int) -> None

add_opset_domain(domain, version) -> None

Declare an opset import for a non-standard domain (for example 'com.microsoft', 1), before add_node() adds a node under that domain.

add_output​

add_outputadd_output(self, name: str, dtype: clika_runtime._core.DataType, shape: collections.abc.Sequence[int]) -> str

add_output(self, name: str, dtype: clika_runtime._core.DataType, shape: collections.abc.Sequence[int]) -> str

add_output(name, dtype, shape) -> str

Register a graph output. Returns the tensor name.

compile​

compilecompile(self, options: object | None = None) -> clika_runtime._core.io.ModelGraph

compile(self, options: object | None = None) -> clika_runtime._core.io.ModelGraph

compile(options=None) -> ModelGraph

Build the executable form: every node parses into its runtime operator (an unsupported op fails here, naming it), weights bind, shapes resolve. options (a CompileOptions) pins input shapes and names the weights' device. Returns the ModelGraph as built: optimize() it when wanted, then finalize() it to run. The OnnxModel is unchanged and reusable.

create​

createcreate(graph_name: str, opset_version: int = 0) -> clika_runtime._core.io.OnnxModel

create(graph_name: str, opset_version: int = 0) -> clika_runtime._core.io.OnnxModel

create(graph_name, opset_version=0) -> OnnxModel

Create an empty model at the given ai.onnx opset (0 = the library default); build it up with add_input / add_initializer / add_node / add_output.

from_graph​

from_graphfrom_graph(graph: object | None, *, opset_version: int = 0, contrib_ops: bool = True, optimize: bool = True, save_as_external_data: bool | None = None, producer_name: str = '') -> clika_runtime._core.io.OnnxModel

from_graph(graph: object | None, *, opset_version: int = 0, contrib_ops: bool = True, optimize: bool = True, save_as_external_data: bool | None = None, producer_name: str = '') -> clika_runtime._core.io.OnnxModel

from_graph(graph, *, opset_version=0, contrib_ops=True, optimize=True, save_as_external_data=None, producer_name='') -> OnnxModel

Build the ONNX model of graph, a ModelGraph, in memory, with nothing written: the model graph.export_onnx(path, ...) would write to its file. Inspect it, edit it, optimize(), save() or compile() it like any other model. It reads the graph's weights only when it is saved or compiled, so it holds no copy of them, and it keeps them alive for as long as it lives. The options are ModelGraph.export_onnx()'s. Raises what export_onnx() raises, and TypeError for a graph that is not a ModelGraph.

inputs​

inputsinputs(self) -> list

inputs(self) -> list

inputs() -> list[tuple[str, DataType, tuple[int, ...]]]

Graph inputs as (name, dtype, dims) tuples; a dynamic dim reads as -1.

merge​

mergemerge(self, second: object | None, io_map: collections.abc.Sequence[tuple[str, str]] = []) -> None

merge(self, second: object | None, io_map: collections.abc.Sequence[tuple[str, str]] = []) -> None

merge(second, io_map=()) -> None

Combine second, an OnnxModel, into this model. Each io_map entry (this_output, second_input) connects one of this model's outputs to one of second's inputs; the connected outputs stop being outputs and the connected inputs stop being inputs. The combined model's inputs are this model's, then second's unconnected ones, and its outputs second's, then this model's unconnected ones. A name of second's that this model already uses is renamed, and the opset imports merge to the highest version per domain. The call consumes second whether it merges or refuses, and leaves it empty. The one exception is second being this model, which is refused before anything moves. Raises InvalidArgumentError when the two cannot combine (an io_map name that names no output or input, second being this model, an empty model), and TypeError for a second that is not an OnnxModel.

nodes​

nodesnodes(self) -> list[clika_runtime._core.io.OnnxNodeInfo]

nodes(self) -> list[clika_runtime._core.io.OnnxNodeInfo]

nodes() -> list[OnnxNodeInfo]

The graph's nodes in graph order, each with its name, op type, domain and the input and output tensor names; a node's name is what remove_node(name) takes.

open​

openopen(path: str) -> clika_runtime._core.io.OnnxModel

open(path: str) -> clika_runtime._core.io.OnnxModel

open(path) -> OnnxModel

Open a .onnx file (initializer payloads referenced as external data stay on disk beside it).

optimize​

optimizeoptimize(self) -> int

optimize(self) -> int

optimize() -> int

Run the graph-rewrite pipeline to a fixed point; returns the pass count.

outputs​

outputsoutputs(self) -> list

outputs(self) -> list

outputs() -> list[tuple[str, DataType, tuple[int, ...]]]

Graph outputs as (name, dtype, dims) tuples.

remove_node​

remove_noderemove_node(self, name: str) -> None

remove_node(self, name: str) -> None

remove_node(name) -> None

Remove the node named name (an error if absent).

save​

savesave(self, path: str) -> None

save(self, path: str) -> None

save(path) -> None

Assemble the model and write it to path.