diff --git a/index.bs b/index.bs index d3a5fea6..dbcef0b6 100644 --- a/index.bs +++ b/index.bs @@ -1779,13 +1779,15 @@ Since the {{MLOperand/[[builder]]}} object is bound by the {{MLGraphBuilder/cons If an operation supports only a subset of {{MLOperandDataType}}s, the allowed data types for each of the operation's input operands, including both positional arguments and options, are given as either an explicit list of {{MLOperandDataType}}s, or a constraint that the operand's [=MLOperand/dataType=] must be the same as the [=MLOperand/dataType=] of another input operand, or any to allow any {{MLOperandDataType}}. -Implementations may support fewer data types for operands than specified. This can be queried for each operation using the {{MLContext/opSupportLimits()}} method on {{MLContext}} and inspecting the {{MLTensorLimits/dataTypes}} value of the corresponding member for the operation. +Implementations MAY support fewer data types for operands than specified, but MUST support at least the specified required data types. Support can be queried for each operation using the {{MLContext/opSupportLimits()}} method on {{MLContext}} and inspecting the {{MLTensorLimits/dataTypes}} value of the corresponding member for the operation across DirectML, ONNX Runtime, LiteRT, and CoreML backends in Chromium prototype now. -Issue: Should we specify the subset of data types that must be supported for each operator? +The set of [=/required data types=] has been determined based on implementation experience across a breadth of platforms to ensure that developers can produce interoperable content by designing models to only use these data types. The Web Platform Tests for this specification use this capability detection mechanism to validate correct behavior for all [=/allowed data types=] but can be passed with only support for the [=/required data types=]. If an operation requires input operands with a particular [=MLOperand/rank=], the allowed ranks for each of the operation's input operands, including both positional arguments and options, are given as an explicit rank (e.g. 1), or N to allow any dimensionality, or the same as another operand. More specific constraints are common, such as when an input operand's shape must be [=/unidirectionally broadcastable=] to or [=/bidirectionally broadcastable=] with another input operand; in these cases, the [=/allowed ranks=] are listed as a range, with specific validation given as steps in the operation. -Implementations may impose a more restricted lower bound and/or upper bound on the [=MLOperand/rank=] of operands than specified. This can be queried for each operation using the {{MLContext/opSupportLimits()}} method on {{MLContext}} and inspecting the {{MLTensorLimits/rankRange}}.{{MLRankRange/min}} and {{MLTensorLimits/rankRange}}.{{MLRankRange/max}} values of the corresponding member for the operation. +Implementations MAY impose a more restricted lower bound and/or upper bound on the [=MLOperand/rank=] of operands than specified, but MUST support at least the specified required ranks. Support can be queried for each operation using the {{MLContext/opSupportLimits()}} method on {{MLContext}} and inspecting the {{MLTensorLimits/rankRange}}.{{MLRankRange/min}} and {{MLTensorLimits/rankRange}}.{{MLRankRange/max}} values of the corresponding member for the operation across DirectML, ONNX Runtime, LiteRT, and CoreML backends in Chromium prototype now. + +The set of [=/required ranks=] has been determined based on implementation experience across a breadth of platforms to ensure that developers can produce interoperable content by designing models to be composed of input operands with only these ranks. {{MLOperatorOptions}} has the following members:
@@ -2261,18 +2263,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} 1 to [=/any rank|N=] + 1 to 5 *output* {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int64"}} + {{MLOperandDataType/"int32"}} [=/any rank|N=] + 0 to 5 @@ -2389,38 +2397,52 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} 1 to [=/any rank|N=] + 3 to 5 {{mean}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 1 1 {{variance}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 1 1 {{MLBatchNormalizationOptions/scale}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 1 1 {{MLBatchNormalizationOptions/bias}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 1 1 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 3 to 5 @@ -2527,18 +2549,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint8"}} [=/any rank|N=] + 0 to 5 *output* [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint8"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -2668,18 +2696,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -2774,18 +2808,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{inputs}}'s [=list/items=] [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} 1 to [=/any rank|N=] + 1 to 5 *output* [=/same type as|same as=] {{inputs}}'s [=list/items=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/same rank as|same as=] {{inputs}}'s [=list/items=] + 1 to 5 @@ -2939,27 +2979,37 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 4 4 {{filter}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 4 4 {{MLConv2dOptions/bias}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 1 1 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 4 4 @@ -3184,27 +3234,37 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 4 4 {{filter}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 4 4 {{MLConv2dOptions/bias}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 1 1 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 4 4 @@ -3328,18 +3388,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} 1 to [=/any rank|N=] + 1 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/same rank as|same as=] {{input}} + 1 to 5 @@ -3435,29 +3501,71 @@ partial dictionary MLOpSupportLimits { - *pow*: Compute the values of the values of the first input tensor to the power of the values of the second input tensor, element-wise. - - +
Tensor limits for element-wise binary options
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Tensor limits for {{MLGraphBuilder/add()}}/{{MLGraphBuilder/sub()}}/{{MLGraphBuilder/mul()}}/{{MLGraphBuilder/div()}}/{{MLGraphBuilder/max()}}/{{MLGraphBuilder/min()}}
operand[=/allowed data types=][=/required data types=][=/allowed ranks=][=/required ranks=]
{{a}}[=/any data type|any=]{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}[=/any rank|N=]0 to 5
{{b}}[=/same type as|same as=] {{a}}{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}[=/any rank|N=]0 to 5
*output*[=/same type as|same as=] {{a}}{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}[=/any rank|N=]0 to 5
+ + + + + + + + + + +
Tensor limits for {{MLGraphBuilder/pow()}}
operand [=/allowed data types=][=/required data types=] [=/allowed ranks=][=/required ranks=]
{{a}} [=/any data type|any=]{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=]0 to 4
{{b}} [=/same type as|same as=] {{a}}{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=]0 to 4
*output* [=/same type as|same as=] {{a}}{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=]0 to 4
@@ -3622,32 +3730,127 @@ partial dictionary MLOpSupportLimits { **Returns:** an {{MLOperand}}. The output tensor that contains the result of element-wise comparison of the two input tensors. - - +
Tensor limits for element-wise logical options
+ + + - + + + + + + + + + + + + + + + + + + + +
Tensor limits for {{MLGraphBuilder/equal()}}/{{MLGraphBuilder/notEqual()}}/{{MLGraphBuilder/greater()}}/{{MLGraphBuilder/greaterOrEqual()}}/{{MLGraphBuilder/lesser()}}/{{MLGraphBuilder/lesserOrEqual()}}
operand [=/allowed data types=][=/required data types=] [=/allowed ranks=][=/required ranks=]
{{a}}specified as part of operation steps[=/any data type|any=]{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}[=/any rank|N=]0 to 4
{{b}}[=/same type as|same as=] {{a}}{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}[=/any rank|N=]0 to 4
*output*{{MLOperandDataType/"uint8"}}{{MLOperandDataType/"uint8"}}[=/any rank|N=]0 to 4
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Tensor limits for {{MLGraphBuilder/logicalNot()}}
operand[=/allowed data types=][=/required data types=][=/allowed ranks=][=/required ranks=]
{{a}}{{MLOperandDataType/"uint8"}}{{MLOperandDataType/"uint8"}}[=/any rank|N=]0 to 5
*output*{{MLOperandDataType/"uint8"}}{{MLOperandDataType/"uint8"}}[=/any rank|N=]0 to 5
+ + + + + + + + + + + + + + + + + + + + +
Tensor limits for {{MLGraphBuilder/logicalAnd()}}/{{MLGraphBuilder/logicalOr()}}/{{MLGraphBuilder/logicalXor()}}
operand[=/allowed data types=][=/required data types=][=/allowed ranks=][=/required ranks=]
{{a}}{{MLOperandDataType/"uint8"}}{{MLOperandDataType/"uint8"}} [=/any rank|N=]0 to 4
{{b}} [=/same type as|same as=] {{a}}{{MLOperandDataType/"uint8"}} [=/any rank|N=]0 to 4
*output* {{MLOperandDataType/"uint8"}}{{MLOperandDataType/"uint8"}} [=/any rank|N=]0 to 4
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Tensor limits for {{MLGraphBuilder/isNaN()}}/{{MLGraphBuilder/isInfinite()}}
operand[=/allowed data types=][=/required data types=][=/allowed ranks=][=/required ranks=]
{{a}}[=/any data type|any=]{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}[=/any rank|N=]0 to 4
*output*{{MLOperandDataType/"uint8"}}{{MLOperandDataType/"uint8"}}[=/any rank|N=]0 to 4
{{MLLogicalNotSupportLimits}} has the following members:
@@ -3871,27 +4074,86 @@ partial dictionary MLOpSupportLimits { tensor is the same as the shape of input tensor. - - +
Tensor limits for element-wise unary options
+ + + + + + + + + + + + + + + + + + + + + + + + +
Tensor limits for {{MLGraphBuilder/abs()}}/{{MLGraphBuilder/identity()}}/{{MLGraphBuilder/neg()}}
operand[=/allowed data types=][=/required data types=][=/allowed ranks=][=/required ranks=]
{{input}}specified as part of operation steps{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}[=/any rank|N=]0 to 5
*output*[=/same type as|same as=] {{input}}{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}[=/same rank as|same as=] {{input}}0 to 5
+ + + + + + + + +
Tensor limits for {{MLGraphBuilder/ceil()}}/{{MLGraphBuilder/cos()}}/{{MLGraphBuilder/erf()}}/{{MLGraphBuilder/exp()}}/{{MLGraphBuilder/floor()}}/{{MLGraphBuilder/log()}}/{{MLGraphBuilder/reciprocal()}}/{{MLGraphBuilder/roundEven()}}/{{MLGraphBuilder/sin()}}/{{MLGraphBuilder/sqrt()}}/{{MLGraphBuilder/tan()}}
operand [=/allowed data types=][=/required data types=] [=/allowed ranks=][=/required ranks=]
{{input}} specified as part of operation steps{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=]0 to 5
*output* [=/same type as|same as=] {{input}}{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}}0 to 5
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Tensor limits for {{MLGraphBuilder/sign()}}
operand[=/allowed data types=][=/required data types=][=/allowed ranks=][=/required ranks=]
{{input}}{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int64"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}}{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}[=/any rank|N=]0 to 5
*output*[=/same type as|same as=] {{input}}{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}[=/same rank as|same as=] {{input}}0 to 5
{{MLOpSupportLimits}} has the following members for element-wise unary operations:
@@ -4133,28 +4395,38 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} {{MLOperandDataType/"uint8"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint32"}}, {{MLOperandDataType/"int32"}} + {{MLOperandDataType/"uint8"}}, {{MLOperandDataType/"int8"}} [=/any rank|N=] + 0 to 5 {{scale}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 {{zeroPoint}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"uint8"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"int32"}} [=/same rank as|same as=] {{input}} + 0 to 5 *output* [=/same type as|same as=] {{scale}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -4307,28 +4579,38 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 {{scale}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 {{zeroPoint}} {{MLOperandDataType/"uint8"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint32"}}, {{MLOperandDataType/"int32"}} + {{MLOperandDataType/"uint8"}}, {{MLOperandDataType/"int8"}} [=/same rank as|same as=] {{input}} + 0 to 5 *output* [=/same type as|same as=] {{zeroPoint}} + {{MLOperandDataType/"uint8"}}, {{MLOperandDataType/"int8"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -4426,18 +4708,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -4511,18 +4799,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=] + 0 to 5 @@ -4601,23 +4895,31 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint8"}} 1 to [=/any rank|N=] + 1 to 5 {{indices}} {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"uint32"}}, {{MLOperandDataType/"int64"}} + {{MLOperandDataType/"int32"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} - [=/any rank|N=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint8"}} + 1 to [=/any rank|N=] + 1 to 5 @@ -4765,23 +5067,31 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint8"}} 1 to [=/any rank|N=] + 1 to 5 {{indices}} {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"uint32"}}, {{MLOperandDataType/"int64"}} + {{MLOperandDataType/"int32"}} [=/same rank as|same as=] {{input}} + 1 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint8"}} [=/same rank as|same as=] {{input}} + 1 to 5 @@ -4928,23 +5238,31 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint8"}} 1 to [=/any rank|N=] + 1 to 5 {{indices}} {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"uint32"}}, {{MLOperandDataType/"int64"}} + {{MLOperandDataType/"int32"}} 1 to [=/any rank|N=] + 1 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint8"}} [=/any rank|N=] + 0 to 5 @@ -5120,18 +5438,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -5241,27 +5565,37 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{a}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{b}} [=/same type as|same as=] {{a}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{MLGemmOptions/c}} [=/same type as|same as=] {{a}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 0 to 2 0 to 2 *output* [=/same type as|same as=] {{a}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 @@ -5449,47 +5783,65 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 3 3 {{weight}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 3 3 {{recurrentWeight}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 3 3 {{MLGruOptions/bias}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{MLGruOptions/recurrentBias}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{MLGruOptions/initialHiddenState}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 3 3 *outputs[0]* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 3 3 *outputs[1]* if {{MLGruOptions/returnSequence}} is true [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 4 4 @@ -5779,37 +6131,51 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{weight}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{recurrentWeight}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{MLGruCellOptions/bias}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 1 1 {{MLGruCellOptions/recurrentBias}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 1 1 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 @@ -6026,18 +6392,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -6111,18 +6483,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -6232,27 +6610,37 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 4 4 {{MLInstanceNormalizationOptions/scale}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 1 1 {{MLInstanceNormalizationOptions/bias}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 1 1 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 4 4 @@ -6385,28 +6773,38 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 {{MLLayerNormalizationOptions/scale}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 {{MLLayerNormalizationOptions/bias}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -6520,18 +6918,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -6618,18 +7022,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -6779,62 +7189,86 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 3 3 {{weight}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 3 3 {{recurrentWeight}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 3 3 {{MLLstmOptions/bias}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{MLLstmOptions/recurrentBias}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{MLLstmOptions/peepholeWeight}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{MLLstmOptions/initialHiddenState}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 3 3 {{MLLstmOptions/initialCellState}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 3 3 *outputs[0]* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 3 3 *outputs[1]* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 3 3 *outputs[2]* if {{MLLstmOptions/returnSequence}} is true [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 4 4 @@ -7177,57 +7611,79 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{weight}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{recurrentWeight}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{hiddenState}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{cellState}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 {{MLLstmCellOptions/bias}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 1 1 {{MLLstmCellOptions/recurrentBias}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 1 1 {{MLLstmCellOptions/peepholeWeight}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 1 1 *outputs[0]* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 *outputs[1]* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 2 @@ -7473,23 +7929,31 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{a}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} 2 to [=/any rank|N=] + 2 to 5 {{b}} [=/same type as|same as=] {{a}} - 2 or [=/any rank|N=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 to [=/any rank|N=] + 2 to 5 *output* [=/same type as|same as=] {{a}} - 2 or [=/any rank|N=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 2 to [=/any rank|N=] + 2 to 5 @@ -7586,18 +8050,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -7776,24 +8246,57 @@ partial dictionary MLOpSupportLimits { `output size = ceil(1 + (input size - filter size + beginning padding + ending padding) / stride)` - - +
Tensor limits for pooling operations
+ + + + + + + + + + + + + + + + + + + + + + + + +
Tensor limits for {{MLGraphBuilder/averagePool2d()}}/{{MLGraphBuilder/maxPool2d()}}
operand[=/allowed data types=][=/required data types=][=/allowed ranks=][=/required ranks=]
{{input}}specified as part of operation steps{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}44
*output*[=/same type as|same as=] {{input}}{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}44
+ + + + + + + + +
Tensor limits for {{MLGraphBuilder/l2Pool2d()}}
operand [=/allowed data types=][=/required data types=] [=/allowed ranks=][=/required ranks=]
{{input}} specified as part of operation steps 4
*output* [=/same type as|same as=] {{input}} 4
@@ -7957,22 +8460,30 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int64"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 4 {{slope}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 4 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 4 @@ -8088,24 +8599,57 @@ partial dictionary MLOpSupportLimits { **Returns:** an {{MLOperand}}. The output N-D tensor of [=MLOperand/rank=] in the range 0 to {{MLGraphBuilder/reduceL1(input, options)/input}}'s [=MLOperand/rank=], inclusive, depending on {{MLReduceOptions/axes}} and {{MLReduceOptions/keepDimensions}}. If the input operand is a scalar, the reduction function is applied to the scalar value, and the output is also a scalar. - - +
Tensor limits for reduction-operations
+ + + + + + + + +
Tensor limits for {{MLGraphBuilder/reduceL1()}}/{{MLGraphBuilder/reduceMax()}}/{{MLGraphBuilder/reduceMin()}}/{{MLGraphBuilder/reduceSum()}}/{{MLGraphBuilder/reduceSumSquare()}}
operand [=/allowed data types=][=/required data types=] [=/allowed ranks=][=/required ranks=]
{{input}} specified as part of operation steps{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=]0 to 5
*output* [=/same type as|same as=] {{input}}{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=]0 to 5
+ + + + + + + + + + + + + + + + + + + + + + + + +
Tensor limits for {{MLGraphBuilder/reduceL2()}}/{{MLGraphBuilder/reduceLogSum()}}/{{MLGraphBuilder/reduceLogSumExp()}}/{{MLGraphBuilder/reduceMean()}}/{{MLGraphBuilder/reduceProduct()}}
operand[=/allowed data types=][=/required data types=][=/allowed ranks=][=/required ranks=]
{{input}}specified as part of operation steps{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}[=/any rank|N=]0 to 5
*output*[=/same type as|same as=] {{input}}{{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}[=/any rank|N=]0 to 5
@@ -8312,18 +8856,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int64"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -8463,17 +9013,23 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"uint8"}}, {{MLOperandDataType/"int8"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 4 4 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + 4 4 @@ -8574,18 +9130,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint8"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint8"}} [=/any rank|N=] + 0 to 5 @@ -8657,18 +9219,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -8747,28 +9315,38 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} 1 to [=/any rank|N=] + 1 to 5 {{indices}} {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"uint32"}}, {{MLOperandDataType/"int64"}} + {{MLOperandDataType/"int32"}} [=/same rank as|same as=] {{input}} + 1 to 5 {{updates}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/same rank as|same as=] {{input}} + 1 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/same rank as|same as=] {{input}} + 1 to 5 @@ -8960,28 +9538,38 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} 1 to [=/any rank|N=] + 1 to 5 {{indices}} {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"uint32"}}, {{MLOperandDataType/"int64"}} + {{MLOperandDataType/"int32"}} 1 to [=/any rank|N=] + 1 to 5 {{updates}} [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} 1 to [=/any rank|N=] + 1 to 5 @@ -9165,18 +9753,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -9264,18 +9858,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint8"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}}, {{MLOperandDataType/"int8"}}, {{MLOperandDataType/"uint8"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -9354,18 +9954,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} 1 to [=/any rank|N=] + 1 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 1 to 5 @@ -9442,18 +10048,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -9535,18 +10147,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -9618,18 +10236,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} 1 to [=/any rank|N=] + 1 to 5 *outputs* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/same rank as|same as=] {{input}} + 1 to 5 @@ -9734,18 +10358,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -9820,18 +10450,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -9905,18 +10541,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/same rank as|same as=] {{input}} + 0 to 5 @@ -9988,18 +10630,24 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{input}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} 2 to [=/any rank|N=] + 2 to 5 *output* [=/same type as|same as=] {{input}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}} [=/same rank as|same as=] {{input}} + 2 to 5 @@ -10128,28 +10776,38 @@ partial dictionary MLOpSupportLimits { operand [=/allowed data types=] + [=/required data types=] [=/allowed ranks=] + [=/required ranks=] {{condition}} {{MLOperandDataType/"uint8"}} + {{MLOperandDataType/"uint8"}} [=/any rank|N=] + 0 to 5 {{trueValue}} [=/any data type|any=] + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=] + 0 to 5 {{falseValue}} [=/same type as|same as=] {{trueValue}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=] + 0 to 5 *output* [=/same type as|same as=] {{trueValue}} + {{MLOperandDataType/"float32"}}, {{MLOperandDataType/"float16"}}, {{MLOperandDataType/"int32"}} [=/any rank|N=] + 0 to 5