.xbuilder.shape_type_compute¶
- experimental_experiment.xbuilder.shape_type_compute.broadcast_shape(sh1: Tuple[int | torch.SymInt | torch.SymFloat | float | str, ...], sh2: Tuple[int | torch.SymInt | torch.SymFloat | float | str, ...], graph_builder: GraphBuilder | None = None) Tuple[int | torch.SymInt | torch.SymFloat | float | str, ...] [source]¶
Computes the shape for many broadcasting operators. This function should be used while converting the graph into ONNX because it assumes the broadcast is possible and adds the necessary constraints on the dynamic in the GraphBuilder shapes to make it work.
- Parameters:
sh1 – first shape
sh2 – second shape
graph_builder – if not None, the function register any constraint which might appear while applying the broadcast
- Returns:
resulting shape
- experimental_experiment.xbuilder.shape_type_compute.prepare_inputs_homogeneous_operator(g: GraphBuilder, *args: Sequence[str], f: Callable | None = None, outputs: List[str] | None = None, name: str | None = None, sts: Any | None = None, check_shape: bool = True, op_type: str | None = None, use_left: bool = False, force_type: int | None = None) Tuple[str, ...] [source]¶
Casts any inputs to ensure all inputs share the same type.
op_type can be specified to bypass some cases with ambiguities such as a float multiplied with an integer.
- Parameters:
g – GraphBuilder
args – operator arguments
f – function calling the operator
outputs – output names
sts – known shapes and types
check_shape – extra verification for shapes
op_type – operator type (onnx name)
use_left – if the operator is in one inplaced modification then the type of the left side
force_type – if not None, choose this type and cast the inputs
- Returns:
new inputs
- experimental_experiment.xbuilder.shape_type_compute.set_shape_type_custom(self: GraphBuilder, node: NodeProto)[source]¶
Sets the shape and type if it can.
- experimental_experiment.xbuilder.shape_type_compute.set_shape_type_op_any(self: GraphBuilder, node: NodeProto)[source]¶
Sets the shape and type if it can.
- experimental_experiment.xbuilder.shape_type_compute.set_type_shape_binary_op(g: GraphBuilder, name: str, *input_names: List[str], begin: int = 0, cmp_op: bool = False, itype: int | None = None) bool [source]¶
Sets the shape and type for a binary operator (add, mul, …).
- experimental_experiment.xbuilder.shape_type_compute.set_type_shape_gemm(g: GraphBuilder, name: str, x: str, y: str, transA: int, transB: int)[source]¶
Sets the output shape for node type Gemm.
- experimental_experiment.xbuilder.shape_type_compute.set_type_shape_matmul(g: GraphBuilder, name: str, x: str, y: str) bool [source]¶
Sets the output shape for node type MatMul.
- experimental_experiment.xbuilder.shape_type_compute.set_type_shape_reduce_op(g: GraphBuilder, name: str, x: str, keepdim: int, axes: Tuple[int] | None = None)[source]¶
Sets the output shape for any Reduce type.
- experimental_experiment.xbuilder.shape_type_compute.set_type_shape_reshape(g: GraphBuilder, name: str, input_name: str, new_shape: Sequence[int])[source]¶
Sets the output shape for node type Reshape