onnx_array_api.light_api#
Main API#
start#
- onnx_array_api.light_api.start(opset: int | None = None, opsets: Dict[str, int] | None = None) OnnxGraph [source]#
Starts an onnx model.
- Parameters:
opset – main opset version
opsets – others opsets as a dictionary
- Returns:
an instance of
onnx_array_api.light_api.OnnxGraph
A very simple model:
<<<
from onnx_array_api.light_api import start onx = start().vin("X").Neg().rename("Y").vout().to_onnx() print(onx)
>>>
ir_version: 9 opset_import { domain: "" version: 20 } graph { node { input: "X" output: "Y" op_type: "Neg" domain: "" } name: "light_api" input { name: "X" type { tensor_type { elem_type: 1 shape { } } } } output { name: "Y" type { tensor_type { elem_type: 1 shape { } } } } }
Another with operator Add:
<<<
from onnx_array_api.light_api import start onx = start().vin("X").vin("Y").bring("X", "Y").Add().rename("Z").vout().to_onnx() print(onx)
>>>
ir_version: 9 opset_import { domain: "" version: 20 } graph { node { input: "X" input: "Y" output: "Z" op_type: "Add" domain: "" } name: "light_api" input { name: "X" type { tensor_type { elem_type: 1 shape { } } } } input { name: "Y" type { tensor_type { elem_type: 1 shape { } } } } output { name: "Z" type { tensor_type { elem_type: 1 shape { } } } } }
translate#
- onnx_array_api.light_api.translate(proto: ModelProto, single_line: bool = False, api: str = 'light') str [source]#
Translates an ONNX proto into a code using Light API for ONNX: everything in one line to describe the ONNX graph.
- Parameters:
proto – model to translate
single_line – as a single line or not
api – API to export into, default is “light” and this is handle by class
onnx_array_api.light_api.emitter.Emitter
, another value is “onnx” which is the inner API implemented in onnx package.
- Returns:
code
<<<
from onnx_array_api.light_api import start, translate onx = ( start() .vin("X") .reshape((-1, 1)) .Transpose(perm=[1, 0]) .rename("Y") .vout() .to_onnx() ) code = translate(onx) print(code)
>>>
( start(opset=20) .cst(np.array([-1, 1], dtype=np.int64)) .rename('r') .vin('X', elem_type=TensorProto.FLOAT) .bring('X', 'r') .Reshape() .rename('r0_0') .bring('r0_0') .Transpose(perm=[1, 0]) .rename('Y') .bring('Y') .vout(elem_type=TensorProto.FLOAT) .to_onnx() )
The inner API from onnx packahe is also available.
<<<
from onnx_array_api.light_api import start, translate onx = ( start() .vin("X") .reshape((-1, 1)) .Transpose(perm=[1, 0]) .rename("Y") .vout() .to_onnx() ) code = translate(onx, api="onnx") print(code)
>>>
opset_imports = [ make_opsetid('', 20), ] inputs = [] outputs = [] nodes = [] initializers = [] sparse_initializers = [] functions = [] initializers.append( from_array( np.array([-1, 1], dtype=np.int64), name='r' ) ) inputs.append(make_tensor_value_info('X', TensorProto.FLOAT, shape=[])) nodes.append( make_node( 'Reshape', ['X', 'r'], ['r0_0'] ) ) nodes.append( make_node( 'Transpose', ['r0_0'], ['Y'], perm=[1, 0] ) ) outputs.append(make_tensor_value_info('Y', TensorProto.FLOAT, shape=[])) graph = make_graph( nodes, 'light_api', inputs, outputs, initializers, sparse_initializer=sparse_initializers, ) model = make_model( graph, functions=functions, opset_imports=opset_imports )
Classes for the Light API#
domain#
..autofunction:: onnx_array_api.light_api.domain
BaseVar#
- class onnx_array_api.light_api.var.BaseVar(*args, **kwargs)[source]#
Represents an input, an initializer, a node, an output, multiple variables.
- Parameters:
parent – the graph containing the Variable
- bring(*vars: List[str | Var]) Var | Vars [source]#
Creates a set of variable as an instance of
onnx_array_api.light_api.Vars
.
- cst(value: ndarray, name: str | None = None) Var [source]#
Adds an initializer
- Parameters:
value – constant tensor
name – input name
- Returns:
instance of
onnx_array_api.light_api.Var
- left_bring(*vars: List[str | Var]) Vars [source]#
Creates a set of variables as an instance of
onnx_array_api.light_api.Vars
. *vars is added to the left, self is added to the right.
- make_node(op_type: str, *inputs: List[Var | TensorProto | ndarray], domain: str = '', n_outputs: int = 1, output_names: List[str] | None = None, **kwargs: Dict[str, Any]) Var | Vars [source]#
Creates a node with this Var as the first input.
- Parameters:
op_type – operator type
inputs – others inputs
domain – domain
n_outputs – number of outputs
output_names – output names, if not specified, outputs are given unique names
kwargs – node attributes
- Returns:
instance of
onnx_array_api.light_api.Var
oronnx_array_api.light_api.Vars
- right_bring(*vars: List[str | Var]) Vars [source]#
Creates a set of variables as an instance of
onnx_array_api.light_api.Vars
. *vars is added to the right, self is added to the left.
- to_onnx() FunctionProto | GraphProto | ModelProto [source]#
Creates the onnx graph.
- v(name: str) Var [source]#
Retrieves another variable than this one.
- Parameters:
name – name of the variable
- Returns:
instance of
onnx_array_api.light_api.Var
OnnxGraph#
- class onnx_array_api.light_api.OnnxGraph(opset: int | None = None, opsets: Dict[str, int] | None = None, proto_type: ProtoType = ProtoType.MODEL)[source]#
Contains every piece needed to create an onnx model in a single instructions. This API is meant to be light and allows the description of a graph.
- Parameters:
opset – main opset version
opsets – other opsets as a dictionary
is_function – a
onnx.ModelProto
or aonnx.FunctionProto
- cst(value: ndarray, name: str | None = None) Var [source]#
Adds an initializer
- Parameters:
value – constant tensor
name – input name
- Returns:
instance of
onnx_array_api.light_api.Var
- make_constant(value: ndarray, name: str | None = None) TensorProto [source]#
Adds an initializer to the graph.
- make_input(name: str, elem_type: int | dtype = 1, shape: Tuple[int, ...] | None = None) ValueInfoProto [source]#
Adds an input to the graph.
- Parameters:
name – input name
elem_type – element type (the input is assumed to be a tensor)
shape – shape
- Returns:
an instance of ValueInfoProto
- make_node(op_type: str, *inputs: List[Var | TensorProto | ndarray], domain: str = '', n_outputs: int = 1, output_names: List[str] | None = None, **kwargs: Dict[str, Any]) NodeProto [source]#
Creates a node.
- Parameters:
op_type – operator type
inputs – others inputs
domain – domain
n_outputs – number of outputs
output_names – output names, if not specified, outputs are given unique names
kwargs – node attributes
- Returns:
NodeProto
- make_output(name: str, elem_type: int | dtype = 1, shape: Tuple[int, ...] | None = None) ValueInfoProto [source]#
Adds an output to the graph.
- Parameters:
name – input name
elem_type – element type (the input is assumed to be a tensor)
shape – shape
- Returns:
an instance of ValueInfoProto
- rename(old_name: str, new_name: str)[source]#
Renames a variable. The renaming does not change anything but is stored in a container.
- Parameters:
old_name – old name
new_name – new name
- to_onnx() FunctionProto | GraphProto | ModelProto [source]#
Converts the graph into an ONNX graph.
- true_name(name: str) str [source]#
Some names were renamed. If name is one of them, the function returns the new name.
ProtoType#
SubDomain#
Var#
- class onnx_array_api.light_api.Var(*args, **kwargs)[source]#
Represents an input, an initializer, a node, an output.
- Parameters:
parent – graph the variable belongs to
name – input name
elem_type – element_type
shape – shape
- bring(*vars: List[str | Var]) Var | Vars #
Creates a set of variable as an instance of
onnx_array_api.light_api.Vars
.
- cst(value: ndarray, name: str | None = None) Var #
Adds an initializer
- Parameters:
value – constant tensor
name – input name
- Returns:
instance of
onnx_array_api.light_api.Var
- left_bring(*vars: List[str | Var]) Vars #
Creates a set of variables as an instance of
onnx_array_api.light_api.Vars
. *vars is added to the left, self is added to the right.
- make_node(op_type: str, *inputs: List[Var | TensorProto | ndarray], domain: str = '', n_outputs: int = 1, output_names: List[str] | None = None, **kwargs: Dict[str, Any]) Var | Vars #
Creates a node with this Var as the first input.
- Parameters:
op_type – operator type
inputs – others inputs
domain – domain
n_outputs – number of outputs
output_names – output names, if not specified, outputs are given unique names
kwargs – node attributes
- Returns:
instance of
onnx_array_api.light_api.Var
oronnx_array_api.light_api.Vars
- property name#
Returns the name of the variable or the new name if it was renamed.
- right_bring(*vars: List[str | Var]) Vars #
Creates a set of variables as an instance of
onnx_array_api.light_api.Vars
. *vars is added to the right, self is added to the left.
- to_onnx() FunctionProto | GraphProto | ModelProto #
Creates the onnx graph.
- v(name: str) Var #
Retrieves another variable than this one.
- Parameters:
name – name of the variable
- Returns:
instance of
onnx_array_api.light_api.Var
Vars#
- class onnx_array_api.light_api.Vars(*args, **kwargs)[source]#
Represents multiple Var.
- Parameters:
parent – graph the variable belongs to
vars – list of names or variables
- bring(*vars: List[str | Var]) Var | Vars #
Creates a set of variable as an instance of
onnx_array_api.light_api.Vars
.
- cst(value: ndarray, name: str | None = None) Var #
Adds an initializer
- Parameters:
value – constant tensor
name – input name
- Returns:
instance of
onnx_array_api.light_api.Var
- left_bring(*vars: List[str | Var]) Vars #
Creates a set of variables as an instance of
onnx_array_api.light_api.Vars
. *vars is added to the left, self is added to the right.
- make_node(op_type: str, *inputs: List[Var | TensorProto | ndarray], domain: str = '', n_outputs: int = 1, output_names: List[str] | None = None, **kwargs: Dict[str, Any]) Var | Vars #
Creates a node with this Var as the first input.
- Parameters:
op_type – operator type
inputs – others inputs
domain – domain
n_outputs – number of outputs
output_names – output names, if not specified, outputs are given unique names
kwargs – node attributes
- Returns:
instance of
onnx_array_api.light_api.Var
oronnx_array_api.light_api.Vars
- right_bring(*vars: List[str | Var]) Vars #
Creates a set of variables as an instance of
onnx_array_api.light_api.Vars
. *vars is added to the right, self is added to the left.
- to_onnx() FunctionProto | GraphProto | ModelProto #
Creates the onnx graph.
- v(name: str) Var #
Retrieves another variable than this one.
- Parameters:
name – name of the variable
- Returns:
instance of
onnx_array_api.light_api.Var
Classes for the Translater#
BaseEmitter#
Emitter#
EventType#
InnerEmitter#
Translater#
- class onnx_array_api.light_api.translate.Translater(proto: ModelProto | FunctionProto | GraphProto, emitter: Emitter | None = None)[source]#
Translates an ONNX graph into a code following the light API.