If¶
If - 23¶
Version¶
name: If (GitHub)
domain:
main
since_version:
23
function:
False
support_level:
SupportType.COMMON
shape inference:
True
This version of the operator has been available since version 23.
Summary¶
If conditional
Attributes¶
else_branch - GRAPH (required) :
Graph to run if condition is false. Has N outputs: values you wish to be live-out to the enclosing scope. The number of outputs must match the number of outputs in the then_branch.
then_branch - GRAPH (required) :
Graph to run if condition is true. Has N outputs: values you wish to be live-out to the enclosing scope. The number of outputs must match the number of outputs in the else_branch.
Inputs¶
cond (heterogeneous) - B:
Condition for the if. The tensor must contain a single element.
Outputs¶
Between 1 and 2147483647 outputs.
outputs (variadic) - V:
Values that are live-out to the enclosing scope. The return values in the
then_branch
andelse_branch
must be of the same data type. Thethen_branch
andelse_branch
may produce tensors with the same element type and different shapes. If corresponding outputs from the then-branch and the else-branch have static shapes S1 and S2, then the shape of the corresponding output variable of the if-node (if present) must be compatible with both S1 and S2 as it represents the union of both possible shapes.For example, if in a model file, the first output ofthen_branch
is typed float tensor with shape [2] and the first output ofelse_branch
is another float tensor with shape [3], If’s first output should have (a) no shape set, or (b) a shape of rank 1 with neitherdim_value
nordim_param
set, or © a shape of rank 1 with a uniquedim_param
. In contrast, the first output cannot have the shape [2] since [2] and [3] are not compatible.
Type Constraints¶
V in (
optional(seq(tensor(bfloat16)))
,optional(seq(tensor(bool)))
,optional(seq(tensor(complex128)))
,optional(seq(tensor(complex64)))
,optional(seq(tensor(double)))
,optional(seq(tensor(float)))
,optional(seq(tensor(float16)))
,optional(seq(tensor(int16)))
,optional(seq(tensor(int32)))
,optional(seq(tensor(int64)))
,optional(seq(tensor(int8)))
,optional(seq(tensor(string)))
,optional(seq(tensor(uint16)))
,optional(seq(tensor(uint32)))
,optional(seq(tensor(uint64)))
,optional(seq(tensor(uint8)))
,optional(tensor(bfloat16))
,optional(tensor(bool))
,optional(tensor(complex128))
,optional(tensor(complex64))
,optional(tensor(double))
,optional(tensor(float))
,optional(tensor(float16))
,optional(tensor(float4e2m1))
,optional(tensor(float8e4m3fn))
,optional(tensor(float8e4m3fnuz))
,optional(tensor(float8e5m2))
,optional(tensor(float8e5m2fnuz))
,optional(tensor(int16))
,optional(tensor(int32))
,optional(tensor(int4))
,optional(tensor(int64))
,optional(tensor(int8))
,optional(tensor(string))
,optional(tensor(uint16))
,optional(tensor(uint32))
,optional(tensor(uint4))
,optional(tensor(uint64))
,optional(tensor(uint8))
,seq(tensor(bfloat16))
,seq(tensor(bool))
,seq(tensor(complex128))
,seq(tensor(complex64))
,seq(tensor(double))
,seq(tensor(float))
,seq(tensor(float16))
,seq(tensor(float4e2m1))
,seq(tensor(float8e4m3fn))
,seq(tensor(float8e4m3fnuz))
,seq(tensor(float8e5m2))
,seq(tensor(float8e5m2fnuz))
,seq(tensor(int16))
,seq(tensor(int32))
,seq(tensor(int4))
,seq(tensor(int64))
,seq(tensor(int8))
,seq(tensor(string))
,seq(tensor(uint16))
,seq(tensor(uint32))
,seq(tensor(uint4))
,seq(tensor(uint64))
,seq(tensor(uint8))
,tensor(bfloat16)
,tensor(bool)
,tensor(complex128)
,tensor(complex64)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(float4e2m1)
,tensor(float8e4m3fn)
,tensor(float8e4m3fnuz)
,tensor(float8e5m2)
,tensor(float8e5m2fnuz)
,tensor(int16)
,tensor(int32)
,tensor(int4)
,tensor(int64)
,tensor(int8)
,tensor(string)
,tensor(uint16)
,tensor(uint32)
,tensor(uint4)
,tensor(uint64)
,tensor(uint8)
):All Tensor, Sequence(Tensor), Optional(Tensor), and Optional(Sequence(Tensor)) types up to IRv11.
B in (
tensor(bool)
):Only bool
If - 21¶
Version¶
name: If (GitHub)
domain:
main
since_version:
21
function:
False
support_level:
SupportType.COMMON
shape inference:
True
This version of the operator has been available since version 21.
Summary¶
If conditional
Attributes¶
else_branch - GRAPH (required) :
Graph to run if condition is false. Has N outputs: values you wish to be live-out to the enclosing scope. The number of outputs must match the number of outputs in the then_branch.
then_branch - GRAPH (required) :
Graph to run if condition is true. Has N outputs: values you wish to be live-out to the enclosing scope. The number of outputs must match the number of outputs in the else_branch.
Inputs¶
cond (heterogeneous) - B:
Condition for the if. The tensor must contain a single element.
Outputs¶
Between 1 and 2147483647 outputs.
outputs (variadic) - V:
Values that are live-out to the enclosing scope. The return values in the
then_branch
andelse_branch
must be of the same data type. Thethen_branch
andelse_branch
may produce tensors with the same element type and different shapes. If corresponding outputs from the then-branch and the else-branch have static shapes S1 and S2, then the shape of the corresponding output variable of the if-node (if present) must be compatible with both S1 and S2 as it represents the union of both possible shapes.For example, if in a model file, the first output ofthen_branch
is typed float tensor with shape [2] and the first output ofelse_branch
is another float tensor with shape [3], If’s first output should have (a) no shape set, or (b) a shape of rank 1 with neitherdim_value
nordim_param
set, or © a shape of rank 1 with a uniquedim_param
. In contrast, the first output cannot have the shape [2] since [2] and [3] are not compatible.
Type Constraints¶
V in (
optional(seq(tensor(bfloat16)))
,optional(seq(tensor(bool)))
,optional(seq(tensor(complex128)))
,optional(seq(tensor(complex64)))
,optional(seq(tensor(double)))
,optional(seq(tensor(float)))
,optional(seq(tensor(float16)))
,optional(seq(tensor(int16)))
,optional(seq(tensor(int32)))
,optional(seq(tensor(int64)))
,optional(seq(tensor(int8)))
,optional(seq(tensor(string)))
,optional(seq(tensor(uint16)))
,optional(seq(tensor(uint32)))
,optional(seq(tensor(uint64)))
,optional(seq(tensor(uint8)))
,optional(tensor(bfloat16))
,optional(tensor(bool))
,optional(tensor(complex128))
,optional(tensor(complex64))
,optional(tensor(double))
,optional(tensor(float))
,optional(tensor(float16))
,optional(tensor(float8e4m3fn))
,optional(tensor(float8e4m3fnuz))
,optional(tensor(float8e5m2))
,optional(tensor(float8e5m2fnuz))
,optional(tensor(int16))
,optional(tensor(int32))
,optional(tensor(int4))
,optional(tensor(int64))
,optional(tensor(int8))
,optional(tensor(string))
,optional(tensor(uint16))
,optional(tensor(uint32))
,optional(tensor(uint4))
,optional(tensor(uint64))
,optional(tensor(uint8))
,seq(tensor(bfloat16))
,seq(tensor(bool))
,seq(tensor(complex128))
,seq(tensor(complex64))
,seq(tensor(double))
,seq(tensor(float))
,seq(tensor(float16))
,seq(tensor(float8e4m3fn))
,seq(tensor(float8e4m3fnuz))
,seq(tensor(float8e5m2))
,seq(tensor(float8e5m2fnuz))
,seq(tensor(int16))
,seq(tensor(int32))
,seq(tensor(int4))
,seq(tensor(int64))
,seq(tensor(int8))
,seq(tensor(string))
,seq(tensor(uint16))
,seq(tensor(uint32))
,seq(tensor(uint4))
,seq(tensor(uint64))
,seq(tensor(uint8))
,tensor(bfloat16)
,tensor(bool)
,tensor(complex128)
,tensor(complex64)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(float8e4m3fn)
,tensor(float8e4m3fnuz)
,tensor(float8e5m2)
,tensor(float8e5m2fnuz)
,tensor(int16)
,tensor(int32)
,tensor(int4)
,tensor(int64)
,tensor(int8)
,tensor(string)
,tensor(uint16)
,tensor(uint32)
,tensor(uint4)
,tensor(uint64)
,tensor(uint8)
):All Tensor, Sequence(Tensor), Optional(Tensor), and Optional(Sequence(Tensor)) types up to IRv10.
B in (
tensor(bool)
):Only bool
If - 19¶
Version¶
name: If (GitHub)
domain:
main
since_version:
19
function:
False
support_level:
SupportType.COMMON
shape inference:
True
This version of the operator has been available since version 19.
Summary¶
If conditional
Attributes¶
else_branch - GRAPH (required) :
Graph to run if condition is false. Has N outputs: values you wish to be live-out to the enclosing scope. The number of outputs must match the number of outputs in the then_branch.
then_branch - GRAPH (required) :
Graph to run if condition is true. Has N outputs: values you wish to be live-out to the enclosing scope. The number of outputs must match the number of outputs in the else_branch.
Inputs¶
cond (heterogeneous) - B:
Condition for the if. The tensor must contain a single element.
Outputs¶
Between 1 and 2147483647 outputs.
outputs (variadic) - V:
Values that are live-out to the enclosing scope. The return values in the
then_branch
andelse_branch
must be of the same data type. Thethen_branch
andelse_branch
may produce tensors with the same element type and different shapes. If corresponding outputs from the then-branch and the else-branch have static shapes S1 and S2, then the shape of the corresponding output variable of the if-node (if present) must be compatible with both S1 and S2 as it represents the union of both possible shapes.For example, if in a model file, the first output ofthen_branch
is typed float tensor with shape [2] and the first output ofelse_branch
is another float tensor with shape [3], If’s first output should have (a) no shape set, or (b) a shape of rank 1 with neitherdim_value
nordim_param
set, or © a shape of rank 1 with a uniquedim_param
. In contrast, the first output cannot have the shape [2] since [2] and [3] are not compatible.
Type Constraints¶
V in (
optional(seq(tensor(bfloat16)))
,optional(seq(tensor(bool)))
,optional(seq(tensor(complex128)))
,optional(seq(tensor(complex64)))
,optional(seq(tensor(double)))
,optional(seq(tensor(float)))
,optional(seq(tensor(float16)))
,optional(seq(tensor(int16)))
,optional(seq(tensor(int32)))
,optional(seq(tensor(int64)))
,optional(seq(tensor(int8)))
,optional(seq(tensor(string)))
,optional(seq(tensor(uint16)))
,optional(seq(tensor(uint32)))
,optional(seq(tensor(uint64)))
,optional(seq(tensor(uint8)))
,optional(tensor(bfloat16))
,optional(tensor(bool))
,optional(tensor(complex128))
,optional(tensor(complex64))
,optional(tensor(double))
,optional(tensor(float))
,optional(tensor(float16))
,optional(tensor(float8e4m3fn))
,optional(tensor(float8e4m3fnuz))
,optional(tensor(float8e5m2))
,optional(tensor(float8e5m2fnuz))
,optional(tensor(int16))
,optional(tensor(int32))
,optional(tensor(int64))
,optional(tensor(int8))
,optional(tensor(string))
,optional(tensor(uint16))
,optional(tensor(uint32))
,optional(tensor(uint64))
,optional(tensor(uint8))
,seq(tensor(bfloat16))
,seq(tensor(bool))
,seq(tensor(complex128))
,seq(tensor(complex64))
,seq(tensor(double))
,seq(tensor(float))
,seq(tensor(float16))
,seq(tensor(float8e4m3fn))
,seq(tensor(float8e4m3fnuz))
,seq(tensor(float8e5m2))
,seq(tensor(float8e5m2fnuz))
,seq(tensor(int16))
,seq(tensor(int32))
,seq(tensor(int64))
,seq(tensor(int8))
,seq(tensor(string))
,seq(tensor(uint16))
,seq(tensor(uint32))
,seq(tensor(uint64))
,seq(tensor(uint8))
,tensor(bfloat16)
,tensor(bool)
,tensor(complex128)
,tensor(complex64)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(float8e4m3fn)
,tensor(float8e4m3fnuz)
,tensor(float8e5m2)
,tensor(float8e5m2fnuz)
,tensor(int16)
,tensor(int32)
,tensor(int64)
,tensor(int8)
,tensor(string)
,tensor(uint16)
,tensor(uint32)
,tensor(uint64)
,tensor(uint8)
):All Tensor, Sequence(Tensor), Optional(Tensor), and Optional(Sequence(Tensor)) types up to IRv9.
B in (
tensor(bool)
):Only bool
If - 16¶
Version¶
name: If (GitHub)
domain:
main
since_version:
16
function:
False
support_level:
SupportType.COMMON
shape inference:
True
This version of the operator has been available since version 16.
Summary¶
If conditional
Attributes¶
else_branch - GRAPH (required) :
Graph to run if condition is false. Has N outputs: values you wish to be live-out to the enclosing scope. The number of outputs must match the number of outputs in the then_branch.
then_branch - GRAPH (required) :
Graph to run if condition is true. Has N outputs: values you wish to be live-out to the enclosing scope. The number of outputs must match the number of outputs in the else_branch.
Inputs¶
cond (heterogeneous) - B:
Condition for the if. The tensor must contain a single element.
Outputs¶
Between 1 and 2147483647 outputs.
outputs (variadic) - V:
Values that are live-out to the enclosing scope. The return values in the
then_branch
andelse_branch
must be of the same data type. Thethen_branch
andelse_branch
may produce tensors with the same element type and different shapes. If corresponding outputs from the then-branch and the else-branch have static shapes S1 and S2, then the shape of the corresponding output variable of the if-node (if present) must be compatible with both S1 and S2 as it represents the union of both possible shapes.For example, if in a model file, the first output ofthen_branch
is typed float tensor with shape [2] and the first output ofelse_branch
is another float tensor with shape [3], If’s first output should have (a) no shape set, or (b) a shape of rank 1 with neitherdim_value
nordim_param
set, or © a shape of rank 1 with a uniquedim_param
. In contrast, the first output cannot have the shape [2] since [2] and [3] are not compatible.
Type Constraints¶
V in (
optional(seq(tensor(bfloat16)))
,optional(seq(tensor(bool)))
,optional(seq(tensor(complex128)))
,optional(seq(tensor(complex64)))
,optional(seq(tensor(double)))
,optional(seq(tensor(float)))
,optional(seq(tensor(float16)))
,optional(seq(tensor(int16)))
,optional(seq(tensor(int32)))
,optional(seq(tensor(int64)))
,optional(seq(tensor(int8)))
,optional(seq(tensor(string)))
,optional(seq(tensor(uint16)))
,optional(seq(tensor(uint32)))
,optional(seq(tensor(uint64)))
,optional(seq(tensor(uint8)))
,optional(tensor(bfloat16))
,optional(tensor(bool))
,optional(tensor(complex128))
,optional(tensor(complex64))
,optional(tensor(double))
,optional(tensor(float))
,optional(tensor(float16))
,optional(tensor(int16))
,optional(tensor(int32))
,optional(tensor(int64))
,optional(tensor(int8))
,optional(tensor(string))
,optional(tensor(uint16))
,optional(tensor(uint32))
,optional(tensor(uint64))
,optional(tensor(uint8))
,seq(tensor(bfloat16))
,seq(tensor(bool))
,seq(tensor(complex128))
,seq(tensor(complex64))
,seq(tensor(double))
,seq(tensor(float))
,seq(tensor(float16))
,seq(tensor(int16))
,seq(tensor(int32))
,seq(tensor(int64))
,seq(tensor(int8))
,seq(tensor(string))
,seq(tensor(uint16))
,seq(tensor(uint32))
,seq(tensor(uint64))
,seq(tensor(uint8))
,tensor(bfloat16)
,tensor(bool)
,tensor(complex128)
,tensor(complex64)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(int16)
,tensor(int32)
,tensor(int64)
,tensor(int8)
,tensor(string)
,tensor(uint16)
,tensor(uint32)
,tensor(uint64)
,tensor(uint8)
):All Tensor, Sequence(Tensor), Optional(Tensor), and Optional(Sequence(Tensor)) types up to IRv4.
B in (
tensor(bool)
):Only bool
If - 13¶
Version¶
name: If (GitHub)
domain:
main
since_version:
13
function:
False
support_level:
SupportType.COMMON
shape inference:
True
This version of the operator has been available since version 13.
Summary¶
If conditional
Attributes¶
else_branch - GRAPH (required) :
Graph to run if condition is false. Has N outputs: values you wish to be live-out to the enclosing scope. The number of outputs must match the number of outputs in the then_branch.
then_branch - GRAPH (required) :
Graph to run if condition is true. Has N outputs: values you wish to be live-out to the enclosing scope. The number of outputs must match the number of outputs in the else_branch.
Inputs¶
cond (heterogeneous) - B:
Condition for the if. The tensor must contain a single element.
Outputs¶
Between 1 and 2147483647 outputs.
outputs (variadic) - V:
Values that are live-out to the enclosing scope. The return values in the
then_branch
andelse_branch
must be of the same data type. Thethen_branch
andelse_branch
may produce tensors with the same element type and different shapes. If corresponding outputs from the then-branch and the else-branch have static shapes S1 and S2, then the shape of the corresponding output variable of the if-node (if present) must be compatible with both S1 and S2 as it represents the union of both possible shapes.For example, if in a model file, the first output ofthen_branch
is typed float tensor with shape [2] and the first output ofelse_branch
is another float tensor with shape [3], If’s first output should have (a) no shape set, or (b) a shape of rank 1 with neitherdim_value
nordim_param
set, or © a shape of rank 1 with a uniquedim_param
. In contrast, the first output cannot have the shape [2] since [2] and [3] are not compatible.
Type Constraints¶
V in (
seq(tensor(bool))
,seq(tensor(complex128))
,seq(tensor(complex64))
,seq(tensor(double))
,seq(tensor(float))
,seq(tensor(float16))
,seq(tensor(int16))
,seq(tensor(int32))
,seq(tensor(int64))
,seq(tensor(int8))
,seq(tensor(string))
,seq(tensor(uint16))
,seq(tensor(uint32))
,seq(tensor(uint64))
,seq(tensor(uint8))
,tensor(bool)
,tensor(complex128)
,tensor(complex64)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(int16)
,tensor(int32)
,tensor(int64)
,tensor(int8)
,tensor(string)
,tensor(uint16)
,tensor(uint32)
,tensor(uint64)
,tensor(uint8)
):All Tensor and Sequence types
B in (
tensor(bool)
):Only bool
If - 11¶
Version¶
name: If (GitHub)
domain:
main
since_version:
11
function:
False
support_level:
SupportType.COMMON
shape inference:
True
This version of the operator has been available since version 11.
Summary¶
If conditional
Attributes¶
else_branch - GRAPH (required) :
Graph to run if condition is false. Has N outputs: values you wish to be live-out to the enclosing scope. The number of outputs must match the number of outputs in the then_branch.
then_branch - GRAPH (required) :
Graph to run if condition is true. Has N outputs: values you wish to be live-out to the enclosing scope. The number of outputs must match the number of outputs in the else_branch.
Inputs¶
cond (heterogeneous) - B:
Condition for the if. The tensor must contain a single element.
Outputs¶
Between 1 and 2147483647 outputs.
outputs (variadic) - V:
Values that are live-out to the enclosing scope. The return values in the
then_branch
andelse_branch
must be of the same data type. Thethen_branch
andelse_branch
may produce tensors with the same element type and different shapes. If corresponding outputs from the then-branch and the else-branch have static shapes S1 and S2, then the shape of the corresponding output variable of the if-node (if present) must be compatible with both S1 and S2 as it represents the union of both possible shapes.For example, if in a model file, the first output ofthen_branch
is typed float tensor with shape [2] and the first output ofelse_branch
is another float tensor with shape [3], If’s first output should have (a) no shape set, or (b) a shape of rank 1 with neitherdim_value
nordim_param
set, or © a shape of rank 1 with a uniquedim_param
. In contrast, the first output cannot have the shape [2] since [2] and [3] are not compatible.
Type Constraints¶
V in (
tensor(bool)
,tensor(complex128)
,tensor(complex64)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(int16)
,tensor(int32)
,tensor(int64)
,tensor(int8)
,tensor(string)
,tensor(uint16)
,tensor(uint32)
,tensor(uint64)
,tensor(uint8)
):All Tensor types
B in (
tensor(bool)
):Only bool
If - 1¶
Version¶
name: If (GitHub)
domain:
main
since_version:
1
function:
False
support_level:
SupportType.COMMON
shape inference:
True
This version of the operator has been available since version 1.
Summary¶
If conditional
Attributes¶
else_branch - GRAPH (required) :
Graph to run if condition is false. Has N outputs: values you wish to be live-out to the enclosing scope. The number of outputs must match the number of outputs in the then_branch.
then_branch - GRAPH (required) :
Graph to run if condition is true. Has N outputs: values you wish to be live-out to the enclosing scope. The number of outputs must match the number of outputs in the else_branch.
Inputs¶
cond (heterogeneous) - B:
Condition for the if. The tensor must contain a single element.
Outputs¶
Between 1 and 2147483647 outputs.
outputs (variadic) - V:
Values that are live-out to the enclosing scope. The return values in the
then_branch
andelse_branch
must be of the same shape and same data type.
Type Constraints¶
V in (
tensor(bool)
,tensor(complex128)
,tensor(complex64)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(int16)
,tensor(int32)
,tensor(int64)
,tensor(int8)
,tensor(string)
,tensor(uint16)
,tensor(uint32)
,tensor(uint64)
,tensor(uint8)
):All Tensor types
B in (
tensor(bool)
):Only bool