tools.graph#
NodeKind#
Node#
- class onnx_extended.tools.graph.onnx_graph_struct.Node(index: int, parent: Graph, proto: TensorProto | NodeProto | ValueInfoProto | str, kind: NodeKind | None = None)[source]#
Defines a node in the graph. It can be an iniatialier or a node.
- create_with_new_values(new_tensor: TensorProto) Node [source]#
Creates an iniatializer or a node Constant based on the new value.
- get_tensor() TensorProto [source]#
Returns the value of the
- getattr(name: str, astype: type | None = None, has_default: bool = False) Any [source]#
Retrieves a specific attribute and extracts its value if astype is not None.
- Parameters:
name – attribute name
astype – cast the attribute into this type
has_default – if the parameter has a default value, the method returns None if the attribute is not found
- Returns:
the value of the attribute or an AttributeProto if astype is None
- is_constant() bool [source]#
True if operator Constant or initializer or a Constant as an output of an operator taking only constants.
- match(pattern: Dict[str, str] | None) bool [source]#
Checks if a node match the proposed pattern.
- Parameters:
pattern – a node matches the pattern {“name”: “node_name”} if its node is equal to ‘node_name’
- Returns:
match
- property name#
Returns the name if node is a NodeProto, None otherwise.
- property outname#
Returns the output name.
NodeWithSubGraph#
NodeSet#
Graph#
- class onnx_extended.tools.graph.Graph(proto: FunctionProto | GraphProto | ModelProto)[source]#
A GraphProto, FunctionProto or ModelProto.
- add_functions(protos: Iterable[FunctionProto])[source]#
Adds functions to the graph when it is exported to ONNX.
- Parameters:
protos – enumerate of FunctionProto
- generate_name(prefix: str = 'new') str [source]#
Generates a name which is not used for any existing result in the graph.
- Parameters:
prefix – prefix to use for the new name, next tries will be
<prefix>_1
,<prefix>_2
, …- Returns:
new name
- generate_node_name(prefix: str = 'new') str [source]#
Generates a node name which is not used for any existing node in the graph.
- Parameters:
prefix – prefix to use for the new name, next tries will be
<prefix>_1
,<prefix>_2
, …- Returns:
new name
- get_node_producer(name: str) Node [source]#
Returns the node producing the output name.
- Parameters:
name – output name to check
- Returns:
Node producing the output name or None if it is an input.
- get_opset(domain: str = '') int [source]#
Returns the opset for a specific domain.
- Parameters:
domain – domain
- Returns:
model opset
- get_opsets() Dict[str, int] [source]#
Returns the opsets available registered for ever domain in the model.
- get_shape(name: str) Tuple[None | str | int, ...] | None [source]#
Returns the shape of a result.
- Parameters:
name – name of the result
- Returns:
None if unknown or a tuple
- is_constant(name: str) bool [source]#
Tells if output name is constant.
- Parameters:
name – result name
- Returns:
True if constant
- remove_unused_nodes()[source]#
Removes unused nodes, a node with only unused outputs.
- Returns:
removed nodes
- replace_nodes(indices: int | List[int], new_nodes: NodeProto | List[NodeProto], new_opsets: Dict[str, int] | None = None) NodeSet [source]#
Replaces a node index
- Parameters:
indices – index or list of indices to replace
new_nodes – node or list of nodes to add
new_opsets – new opet versions
- Returns:
added nodes
By default, the nodes are inserted at position indices[-1]. It ensures the inputs of the new nodes were already computed. However, it does not ensure that every intermediate node between the first and the last removed nodes can be computed. Sorting the nodes is needed in that. This function does not do that.
- simplify(remove_unused: bool = True) Graph [source]#
Stores every node into nodes. Removes unused nodes.
- Parameters:
remove_unused – removes unused nodes as well, see
remove_unused_nodes()
- Returns:
self
- to_onnx() ModelProto | FunctionProto | GraphProto [source]#
Converts the current graph into onnx with the same type as the input type.