// GENERATED CONTENT - DO NOT EDIT // Content was automatically extracted by Reffy into webref // (https://github.com/w3c/webref) // Source: Web Neural Network API (https://webmachinelearning.github.io/webnn/) interface mixin NavigatorML { [SecureContext, SameObject] readonly attribute ML ml; }; Navigator includes NavigatorML; WorkerNavigator includes NavigatorML; enum MLPowerPreference { "default", "high-performance", "low-power" }; dictionary MLContextOptions { MLPowerPreference powerPreference = "default"; }; [SecureContext, Exposed=(Window, Worker)] interface ML { Promise createContext(optional MLContextOptions options = {}); Promise createContext(GPUDevice gpuDevice); }; typedef record MLNamedTensors; dictionary MLContextLostInfo { DOMString message; }; [SecureContext, Exposed=(Window, Worker)] interface MLContext { undefined dispatch(MLGraph graph, MLNamedTensors inputs, MLNamedTensors outputs); Promise createTensor(MLTensorDescriptor descriptor); Promise createConstantTensor( MLOperandDescriptor descriptor, AllowSharedBufferSource inputData); Promise readTensor(MLTensor tensor); Promise readTensor(MLTensor tensor, AllowSharedBufferSource outputData); undefined writeTensor(MLTensor tensor, AllowSharedBufferSource inputData); MLOpSupportLimits opSupportLimits(); undefined destroy(); readonly attribute Promise lost; }; dictionary MLOpSupportLimits { MLInputOperandLayout preferredInputLayout; [EnforceRange] unsigned long long maxTensorByteLength; MLDataTypeLimits input; MLDataTypeLimits constant; MLDataTypeLimits output; }; typedef sequence MLDataTypeList; dictionary MLDataTypeLimits { MLDataTypeList dataTypes; }; dictionary MLRankRange { unsigned long min; unsigned long max; }; dictionary MLTensorLimits { MLDataTypeList dataTypes; MLRankRange rankRange; }; dictionary MLBinarySupportLimits { MLTensorLimits a; MLTensorLimits b; MLDataTypeLimits output; }; dictionary MLSingleInputSupportLimits { MLTensorLimits input; MLDataTypeLimits output; }; [SecureContext, Exposed=(Window, Worker)] interface MLGraph { undefined destroy(); }; enum MLInputOperandLayout { "nchw", "nhwc" }; enum MLOperandDataType { "float32", "float16", "int32", "uint32", "int64", "uint64", "int8", "uint8" }; dictionary MLOperandDescriptor { required MLOperandDataType dataType; required sequence<[EnforceRange] unsigned long> shape; }; [SecureContext, Exposed=(Window, Worker)] interface MLOperand { readonly attribute MLOperandDataType dataType; readonly attribute FrozenArray shape; }; dictionary MLOperatorOptions { USVString label = ""; }; typedef (bigint or unrestricted double) MLNumber; dictionary MLTensorDescriptor : MLOperandDescriptor { boolean readable = false; boolean writable = false; }; [SecureContext, Exposed=(Window, Worker)] interface MLTensor { readonly attribute MLOperandDataType dataType; readonly attribute FrozenArray shape; readonly attribute boolean readable; readonly attribute boolean writable; readonly attribute boolean constant; undefined destroy(); }; typedef record MLNamedOperands; [SecureContext, Exposed=(Window, Worker)] interface MLGraphBuilder { // Construct the graph builder from the context. constructor(MLContext context); // Create an operand for a graph input. MLOperand input(USVString name, MLOperandDescriptor descriptor); // Create an operand for a graph constant. MLOperand constant(MLOperandDescriptor descriptor, AllowSharedBufferSource buffer); // Create a scalar operand from the specified number of the specified type. MLOperand constant(MLOperandDataType type, MLNumber value); // Create an operand from a specified constant tensor. MLOperand constant(MLTensor tensor); // Compile the graph up to the specified output operands asynchronously. Promise build(MLNamedOperands outputs); }; dictionary MLArgMinMaxOptions : MLOperatorOptions { boolean keepDimensions = false; MLOperandDataType outputDataType = "int32"; }; partial interface MLGraphBuilder { MLOperand argMin(MLOperand input, [EnforceRange] unsigned long axis, optional MLArgMinMaxOptions options = {}); MLOperand argMax(MLOperand input, [EnforceRange] unsigned long axis, optional MLArgMinMaxOptions options = {}); }; partial dictionary MLOpSupportLimits { MLSingleInputSupportLimits argMin; MLSingleInputSupportLimits argMax; }; dictionary MLBatchNormalizationOptions : MLOperatorOptions { MLOperand scale; MLOperand bias; [EnforceRange] unsigned long axis = 1; double epsilon = 1e-5; }; partial interface MLGraphBuilder { MLOperand batchNormalization(MLOperand input, MLOperand mean, MLOperand variance, optional MLBatchNormalizationOptions options = {}); }; dictionary MLBatchNormalizationSupportLimits { MLTensorLimits input; MLTensorLimits mean; MLTensorLimits variance; MLTensorLimits scale; MLTensorLimits bias; MLDataTypeLimits output; }; partial dictionary MLOpSupportLimits { MLBatchNormalizationSupportLimits batchNormalization; }; partial interface MLGraphBuilder { MLOperand cast(MLOperand input, MLOperandDataType type, optional MLOperatorOptions options = {}); }; partial dictionary MLOpSupportLimits { MLSingleInputSupportLimits cast; }; dictionary MLClampOptions : MLOperatorOptions { MLNumber minValue; MLNumber maxValue; }; partial interface MLGraphBuilder { MLOperand clamp(MLOperand input, optional MLClampOptions options = {}); }; partial dictionary MLOpSupportLimits { MLSingleInputSupportLimits clamp; }; partial interface MLGraphBuilder { MLOperand concat(sequence inputs, [EnforceRange] unsigned long axis, optional MLOperatorOptions options = {}); }; dictionary MLConcatSupportLimits { MLTensorLimits inputs; MLDataTypeLimits output; }; partial dictionary MLOpSupportLimits { MLConcatSupportLimits concat; }; enum MLConv2dFilterOperandLayout { "oihw", "hwio", "ohwi", "ihwo" }; dictionary MLConv2dOptions : MLOperatorOptions { sequence<[EnforceRange] unsigned long> padding; sequence<[EnforceRange] unsigned long> strides; sequence<[EnforceRange] unsigned long> dilations; [EnforceRange] unsigned long groups = 1; MLInputOperandLayout inputLayout = "nchw"; MLConv2dFilterOperandLayout filterLayout = "oihw"; MLOperand bias; }; partial interface MLGraphBuilder { MLOperand conv2d(MLOperand input, MLOperand filter, optional MLConv2dOptions options = {}); }; dictionary MLConv2dSupportLimits { MLTensorLimits input; MLTensorLimits filter; MLTensorLimits bias; MLDataTypeLimits output; }; partial dictionary MLOpSupportLimits { MLConv2dSupportLimits conv2d; }; enum MLConvTranspose2dFilterOperandLayout { "iohw", "hwoi", "ohwi" }; dictionary MLConvTranspose2dOptions : MLOperatorOptions { sequence<[EnforceRange] unsigned long> padding; sequence<[EnforceRange] unsigned long> strides; sequence<[EnforceRange] unsigned long> dilations; sequence<[EnforceRange] unsigned long> outputPadding; sequence<[EnforceRange] unsigned long> outputSizes; [EnforceRange] unsigned long groups = 1; MLInputOperandLayout inputLayout = "nchw"; MLConvTranspose2dFilterOperandLayout filterLayout = "iohw"; MLOperand bias; }; partial interface MLGraphBuilder { MLOperand convTranspose2d(MLOperand input, MLOperand filter, optional MLConvTranspose2dOptions options = {}); }; partial dictionary MLOpSupportLimits { MLConv2dSupportLimits convTranspose2d; }; dictionary MLCumulativeSumOptions : MLOperatorOptions { boolean exclusive = false; boolean reversed = false; }; partial interface MLGraphBuilder { MLOperand cumulativeSum(MLOperand input, unsigned long axis, optional MLCumulativeSumOptions options = {}); }; partial dictionary MLOpSupportLimits { MLSingleInputSupportLimits cumulativeSum; }; partial interface MLGraphBuilder { MLOperand add(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); MLOperand sub(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); MLOperand mul(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); MLOperand div(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); MLOperand max(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); MLOperand min(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); MLOperand pow(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); }; partial dictionary MLOpSupportLimits { MLBinarySupportLimits add; MLBinarySupportLimits sub; MLBinarySupportLimits mul; MLBinarySupportLimits div; MLBinarySupportLimits max; MLBinarySupportLimits min; MLBinarySupportLimits pow; }; partial interface MLGraphBuilder { MLOperand equal(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); MLOperand notEqual(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); MLOperand greater(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); MLOperand greaterOrEqual(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); MLOperand lesser(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); MLOperand lesserOrEqual(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); MLOperand logicalNot(MLOperand a, optional MLOperatorOptions options = {}); MLOperand logicalAnd(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); MLOperand logicalOr(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); MLOperand logicalXor(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); }; dictionary MLLogicalNotSupportLimits { MLTensorLimits a; MLDataTypeLimits output; }; partial dictionary MLOpSupportLimits { MLBinarySupportLimits equal; MLBinarySupportLimits notEqual; MLBinarySupportLimits greater; MLBinarySupportLimits greaterOrEqual; MLBinarySupportLimits lesser; MLBinarySupportLimits lesserOrEqual; MLLogicalNotSupportLimits logicalNot; MLBinarySupportLimits logicalAnd; MLBinarySupportLimits logicalOr; MLBinarySupportLimits logicalXor; }; partial interface MLGraphBuilder { MLOperand abs(MLOperand input, optional MLOperatorOptions options = {}); MLOperand ceil(MLOperand input, optional MLOperatorOptions options = {}); MLOperand cos(MLOperand input, optional MLOperatorOptions options = {}); MLOperand erf(MLOperand input, optional MLOperatorOptions options = {}); MLOperand exp(MLOperand input, optional MLOperatorOptions options = {}); MLOperand floor(MLOperand input, optional MLOperatorOptions options = {}); MLOperand identity(MLOperand input, optional MLOperatorOptions options = {}); MLOperand log(MLOperand input, optional MLOperatorOptions options = {}); MLOperand neg(MLOperand input, optional MLOperatorOptions options = {}); MLOperand reciprocal(MLOperand input, optional MLOperatorOptions options = {}); MLOperand sin(MLOperand input, optional MLOperatorOptions options = {}); MLOperand sign(MLOperand input, optional MLOperatorOptions options = {}); MLOperand sqrt(MLOperand input, optional MLOperatorOptions options = {}); MLOperand tan(MLOperand input, optional MLOperatorOptions options = {}); }; partial dictionary MLOpSupportLimits { MLSingleInputSupportLimits abs; MLSingleInputSupportLimits ceil; MLSingleInputSupportLimits cos; MLSingleInputSupportLimits erf; MLSingleInputSupportLimits exp; MLSingleInputSupportLimits floor; MLSingleInputSupportLimits identity; MLSingleInputSupportLimits log; MLSingleInputSupportLimits neg; MLSingleInputSupportLimits reciprocal; MLSingleInputSupportLimits sin; MLSingleInputSupportLimits sign; MLSingleInputSupportLimits sqrt; MLSingleInputSupportLimits tan; }; partial interface MLGraphBuilder { MLOperand dequantizeLinear(MLOperand input, MLOperand scale, MLOperand zeroPoint, optional MLOperatorOptions options = {}); }; dictionary MLQuantizeDequantizeLinearSupportLimits { MLTensorLimits input; MLTensorLimits scale; MLTensorLimits zeroPoint; MLDataTypeLimits output; }; partial dictionary MLOpSupportLimits { MLQuantizeDequantizeLinearSupportLimits dequantizeLinear; }; partial interface MLGraphBuilder { MLOperand quantizeLinear(MLOperand input, MLOperand scale, MLOperand zeroPoint, optional MLOperatorOptions options = {}); }; partial dictionary MLOpSupportLimits { MLQuantizeDequantizeLinearSupportLimits quantizeLinear; }; dictionary MLEluOptions : MLOperatorOptions { double alpha = 1; }; partial interface MLGraphBuilder { MLOperand elu(MLOperand input, optional MLEluOptions options = {}); }; partial dictionary MLOpSupportLimits { MLSingleInputSupportLimits elu; }; partial interface MLGraphBuilder { MLOperand expand(MLOperand input, sequence<[EnforceRange] unsigned long> newShape, optional MLOperatorOptions options = {}); }; partial dictionary MLOpSupportLimits { MLSingleInputSupportLimits expand; }; dictionary MLGatherOptions : MLOperatorOptions { [EnforceRange] unsigned long axis = 0; }; partial interface MLGraphBuilder { MLOperand gather(MLOperand input, MLOperand indices, optional MLGatherOptions options = {}); }; dictionary MLGatherSupportLimits { MLTensorLimits input; MLTensorLimits indices; MLDataTypeLimits output; }; partial dictionary MLOpSupportLimits { MLGatherSupportLimits gather; }; partial interface MLGraphBuilder { MLOperand gatherElements(MLOperand input, MLOperand indices, optional MLGatherOptions options = {}); }; partial dictionary MLOpSupportLimits { MLGatherSupportLimits gatherElements; }; partial interface MLGraphBuilder { MLOperand gatherND(MLOperand input, MLOperand indices, optional MLOperatorOptions options = {}); }; partial dictionary MLOpSupportLimits { MLGatherSupportLimits gatherND; }; partial interface MLGraphBuilder { MLOperand gelu(MLOperand input, optional MLOperatorOptions options = {}); }; partial dictionary MLOpSupportLimits { MLSingleInputSupportLimits gelu; }; dictionary MLGemmOptions : MLOperatorOptions { MLOperand c; double alpha = 1.0; double beta = 1.0; boolean aTranspose = false; boolean bTranspose = false; }; partial interface MLGraphBuilder { MLOperand gemm(MLOperand a, MLOperand b, optional MLGemmOptions options = {}); }; dictionary MLGemmSupportLimits { MLTensorLimits a; MLTensorLimits b; MLTensorLimits c; MLDataTypeLimits output; }; partial dictionary MLOpSupportLimits { MLGemmSupportLimits gemm; }; enum MLGruWeightLayout { "zrn", // update-reset-new gate ordering "rzn" // reset-update-new gate ordering }; enum MLRecurrentNetworkActivation { "relu", "sigmoid", "tanh" }; enum MLRecurrentNetworkDirection { "forward", "backward", "both" }; dictionary MLGruOptions : MLOperatorOptions { MLOperand bias; MLOperand recurrentBias; MLOperand initialHiddenState; boolean resetAfter = true; boolean returnSequence = false; MLRecurrentNetworkDirection direction = "forward"; MLGruWeightLayout layout = "zrn"; sequence activations; }; partial interface MLGraphBuilder { sequence gru(MLOperand input, MLOperand weight, MLOperand recurrentWeight, [EnforceRange] unsigned long steps, [EnforceRange] unsigned long hiddenSize, optional MLGruOptions options = {}); }; dictionary MLGruSupportLimits { MLTensorLimits input; MLTensorLimits weight; MLTensorLimits recurrentWeight; MLTensorLimits bias; MLTensorLimits recurrentBias; MLTensorLimits initialHiddenState; MLDataTypeLimits outputs; }; partial dictionary MLOpSupportLimits { MLGruSupportLimits gru; }; dictionary MLGruCellOptions : MLOperatorOptions { MLOperand bias; MLOperand recurrentBias; boolean resetAfter = true; MLGruWeightLayout layout = "zrn"; sequence activations; }; partial interface MLGraphBuilder { MLOperand gruCell(MLOperand input, MLOperand weight, MLOperand recurrentWeight, MLOperand hiddenState, [EnforceRange] unsigned long hiddenSize, optional MLGruCellOptions options = {}); }; dictionary MLGruCellSupportLimits { MLTensorLimits input; MLTensorLimits weight; MLTensorLimits recurrentWeight; MLTensorLimits hiddenState; MLTensorLimits bias; MLTensorLimits recurrentBias; MLDataTypeLimits output; }; partial dictionary MLOpSupportLimits { MLGruCellSupportLimits gruCell; }; dictionary MLHardSigmoidOptions : MLOperatorOptions { double alpha = 0.2; double beta = 0.5; }; partial interface MLGraphBuilder { MLOperand hardSigmoid(MLOperand input, optional MLHardSigmoidOptions options = {}); }; partial dictionary MLOpSupportLimits { MLSingleInputSupportLimits hardSigmoid; }; partial interface MLGraphBuilder { MLOperand hardSwish(MLOperand input, optional MLOperatorOptions options = {}); }; partial dictionary MLOpSupportLimits { MLSingleInputSupportLimits hardSwish; }; dictionary MLInstanceNormalizationOptions : MLOperatorOptions { MLOperand scale; MLOperand bias; double epsilon = 1e-5; MLInputOperandLayout layout = "nchw"; }; partial interface MLGraphBuilder { MLOperand instanceNormalization(MLOperand input, optional MLInstanceNormalizationOptions options = {}); }; dictionary MLNormalizationSupportLimits { MLTensorLimits input; MLTensorLimits scale; MLTensorLimits bias; MLDataTypeLimits output; }; partial dictionary MLOpSupportLimits { MLNormalizationSupportLimits instanceNormalization; }; dictionary MLLayerNormalizationOptions : MLOperatorOptions { MLOperand scale; MLOperand bias; sequence<[EnforceRange] unsigned long> axes; double epsilon = 1e-5; }; partial interface MLGraphBuilder { MLOperand layerNormalization(MLOperand input, optional MLLayerNormalizationOptions options = {}); }; partial dictionary MLOpSupportLimits { MLNormalizationSupportLimits layerNormalization; }; dictionary MLLeakyReluOptions : MLOperatorOptions { double alpha = 0.01; }; partial interface MLGraphBuilder { MLOperand leakyRelu(MLOperand input, optional MLLeakyReluOptions options = {}); }; partial dictionary MLOpSupportLimits { MLSingleInputSupportLimits leakyRelu; }; dictionary MLLinearOptions : MLOperatorOptions { double alpha = 1; double beta = 0; }; partial interface MLGraphBuilder { MLOperand linear(MLOperand input, optional MLLinearOptions options = {}); }; partial dictionary MLOpSupportLimits { MLSingleInputSupportLimits linear; }; enum MLLstmWeightLayout { "iofg", // input-output-forget-cell gate ordering "ifgo" // input-forget-cell-output gate ordering }; dictionary MLLstmOptions : MLOperatorOptions { MLOperand bias; MLOperand recurrentBias; MLOperand peepholeWeight; MLOperand initialHiddenState; MLOperand initialCellState; boolean returnSequence = false; MLRecurrentNetworkDirection direction = "forward"; MLLstmWeightLayout layout = "iofg"; sequence activations; }; partial interface MLGraphBuilder { sequence lstm(MLOperand input, MLOperand weight, MLOperand recurrentWeight, [EnforceRange] unsigned long steps, [EnforceRange] unsigned long hiddenSize, optional MLLstmOptions options = {}); }; dictionary MLLstmSupportLimits { MLTensorLimits input; MLTensorLimits weight; MLTensorLimits recurrentWeight; MLTensorLimits bias; MLTensorLimits recurrentBias; MLTensorLimits peepholeWeight; MLTensorLimits initialHiddenState; MLTensorLimits initialCellState; MLDataTypeLimits outputs; }; partial dictionary MLOpSupportLimits { MLLstmSupportLimits lstm; }; dictionary MLLstmCellOptions : MLOperatorOptions { MLOperand bias; MLOperand recurrentBias; MLOperand peepholeWeight; MLLstmWeightLayout layout = "iofg"; sequence activations; }; partial interface MLGraphBuilder { sequence lstmCell(MLOperand input, MLOperand weight, MLOperand recurrentWeight, MLOperand hiddenState, MLOperand cellState, [EnforceRange] unsigned long hiddenSize, optional MLLstmCellOptions options = {}); }; dictionary MLLstmCellSupportLimits { MLTensorLimits input; MLTensorLimits weight; MLTensorLimits recurrentWeight; MLTensorLimits hiddenState; MLTensorLimits cellState; MLTensorLimits bias; MLTensorLimits recurrentBias; MLTensorLimits peepholeWeight; MLDataTypeLimits outputs; }; partial dictionary MLOpSupportLimits { MLLstmCellSupportLimits lstmCell; }; partial interface MLGraphBuilder { MLOperand matmul(MLOperand a, MLOperand b, optional MLOperatorOptions options = {}); }; partial dictionary MLOpSupportLimits { MLBinarySupportLimits matmul; }; enum MLPaddingMode { "constant", "edge", "reflection" }; dictionary MLPadOptions : MLOperatorOptions { MLPaddingMode mode = "constant"; MLNumber value = 0; }; partial interface MLGraphBuilder { MLOperand pad(MLOperand input, sequence<[EnforceRange] unsigned long> beginningPadding, sequence<[EnforceRange] unsigned long> endingPadding, optional MLPadOptions options = {}); }; partial dictionary MLOpSupportLimits { MLSingleInputSupportLimits pad; }; enum MLRoundingType { "floor", "ceil" }; dictionary MLPool2dOptions : MLOperatorOptions { sequence<[EnforceRange] unsigned long> windowDimensions; sequence<[EnforceRange] unsigned long> padding; sequence<[EnforceRange] unsigned long> strides; sequence<[EnforceRange] unsigned long> dilations; MLInputOperandLayout layout = "nchw"; MLRoundingType roundingType = "floor"; sequence<[EnforceRange] unsigned long> outputSizes; }; partial interface MLGraphBuilder { MLOperand averagePool2d(MLOperand input, optional MLPool2dOptions options = {}); MLOperand l2Pool2d(MLOperand input, optional MLPool2dOptions options = {}); MLOperand maxPool2d(MLOperand input, optional MLPool2dOptions options = {}); }; partial dictionary MLOpSupportLimits { MLSingleInputSupportLimits averagePool2d; MLSingleInputSupportLimits l2Pool2d; MLSingleInputSupportLimits maxPool2d; }; partial interface MLGraphBuilder { MLOperand prelu(MLOperand input, MLOperand slope, optional MLOperatorOptions options = {}); }; dictionary MLPreluSupportLimits { MLTensorLimits input; MLTensorLimits slope; MLDataTypeLimits output; }; partial dictionary MLOpSupportLimits { MLPreluSupportLimits prelu; }; dictionary MLReduceOptions : MLOperatorOptions { sequence<[EnforceRange] unsigned long> axes; boolean keepDimensions = false; }; partial interface MLGraphBuilder { MLOperand reduceL1(MLOperand input, optional MLReduceOptions options = {}); MLOperand reduceL2(MLOperand input, optional MLReduceOptions options = {}); MLOperand reduceLogSum(MLOperand input, optional MLReduceOptions options = {}); MLOperand reduceLogSumExp(MLOperand input, optional MLReduceOptions options = {}); MLOperand reduceMax(MLOperand input, optional MLReduceOptions options = {}); MLOperand reduceMean(MLOperand input, optional MLReduceOptions options = {}); MLOperand reduceMin(MLOperand input, optional MLReduceOptions options = {}); MLOperand reduceProduct(MLOperand input, optional MLReduceOptions options = {}); MLOperand reduceSum(MLOperand input, optional MLReduceOptions options = {}); MLOperand reduceSumSquare(MLOperand input, optional MLReduceOptions options = {}); }; partial dictionary MLOpSupportLimits { MLSingleInputSupportLimits reduceL1; MLSingleInputSupportLimits reduceL2; MLSingleInputSupportLimits reduceLogSum; MLSingleInputSupportLimits reduceLogSumExp; MLSingleInputSupportLimits reduceMax; MLSingleInputSupportLimits reduceMean; MLSingleInputSupportLimits reduceMin; MLSingleInputSupportLimits reduceProduct; MLSingleInputSupportLimits reduceSum; MLSingleInputSupportLimits reduceSumSquare; }; partial interface MLGraphBuilder { MLOperand relu(MLOperand input, optional MLOperatorOptions options = {}); }; partial dictionary MLOpSupportLimits { MLSingleInputSupportLimits relu; }; enum MLInterpolationMode { "nearest-neighbor", "linear" }; dictionary MLResample2dOptions : MLOperatorOptions { MLInterpolationMode mode = "nearest-neighbor"; sequence scales; sequence<[EnforceRange] unsigned long> sizes; sequence<[EnforceRange] unsigned long> axes; }; partial interface MLGraphBuilder { MLOperand resample2d(MLOperand input, optional MLResample2dOptions options = {}); }; partial dictionary MLOpSupportLimits { MLSingleInputSupportLimits resample2d; }; partial interface MLGraphBuilder { MLOperand reshape(MLOperand input, sequence<[EnforceRange] unsigned long> newShape, optional MLOperatorOptions options = {}); }; partial dictionary MLOpSupportLimits { MLSingleInputSupportLimits reshape; }; dictionary MLReverseOptions : MLOperatorOptions { sequence<[EnforceRange] unsigned long> axes; }; partial interface MLGraphBuilder { MLOperand reverse(MLOperand input, optional MLReverseOptions options = {}); }; partial dictionary MLOpSupportLimits { MLSingleInputSupportLimits reverse; }; dictionary MLScatterOptions : MLOperatorOptions { [EnforceRange] unsigned long axis = 0; }; partial interface MLGraphBuilder { MLOperand scatterElements(MLOperand input, MLOperand indices, MLOperand updates, optional MLScatterOptions options = {}); }; dictionary MLScatterSupportLimits { MLTensorLimits input; MLTensorLimits indices; MLTensorLimits updates; MLDataTypeLimits output; }; partial dictionary MLOpSupportLimits { MLScatterSupportLimits scatterElements; }; partial interface MLGraphBuilder { MLOperand scatterND(MLOperand input, MLOperand indices, MLOperand updates, optional MLOperatorOptions options = {}); }; partial dictionary MLOpSupportLimits { MLScatterSupportLimits scatterND; }; partial interface MLGraphBuilder { MLOperand sigmoid(MLOperand input, optional MLOperatorOptions options = {}); }; partial dictionary MLOpSupportLimits { MLSingleInputSupportLimits sigmoid; }; dictionary MLSliceOptions : MLOperatorOptions { sequence<[EnforceRange] unsigned long> strides; }; partial interface MLGraphBuilder { MLOperand slice(MLOperand input, sequence<[EnforceRange] unsigned long> starts, sequence<[EnforceRange] unsigned long> sizes, optional MLSliceOptions options = {}); }; partial dictionary MLOpSupportLimits { MLSingleInputSupportLimits slice; }; partial interface MLGraphBuilder { MLOperand softmax(MLOperand input, [EnforceRange] unsigned long axis, optional MLOperatorOptions options = {}); }; partial dictionary MLOpSupportLimits { MLSingleInputSupportLimits softmax; }; partial interface MLGraphBuilder { MLOperand softplus(MLOperand input, optional MLOperatorOptions options = {}); }; partial dictionary MLOpSupportLimits { MLSingleInputSupportLimits softplus; }; partial interface MLGraphBuilder { MLOperand softsign(MLOperand input, optional MLOperatorOptions options = {}); }; partial dictionary MLOpSupportLimits { MLSingleInputSupportLimits softsign; }; dictionary MLSplitOptions : MLOperatorOptions { [EnforceRange] unsigned long axis = 0; }; partial interface MLGraphBuilder { sequence split( MLOperand input, ([EnforceRange] unsigned long or sequence<[EnforceRange] unsigned long>) splits, optional MLSplitOptions options = {}); }; dictionary MLSplitSupportLimits { MLTensorLimits input; MLDataTypeLimits outputs; }; partial dictionary MLOpSupportLimits { MLSplitSupportLimits split; }; partial interface MLGraphBuilder { MLOperand tanh(MLOperand input, optional MLOperatorOptions options = {}); }; partial dictionary MLOpSupportLimits { MLSingleInputSupportLimits tanh; }; partial interface MLGraphBuilder { MLOperand tile(MLOperand input, sequence repetitions, optional MLOperatorOptions options = {}); }; partial dictionary MLOpSupportLimits { MLSingleInputSupportLimits tile; }; dictionary MLTransposeOptions : MLOperatorOptions { sequence<[EnforceRange] unsigned long> permutation; }; partial interface MLGraphBuilder { MLOperand transpose(MLOperand input, optional MLTransposeOptions options = {}); }; partial dictionary MLOpSupportLimits { MLSingleInputSupportLimits transpose; }; dictionary MLTriangularOptions : MLOperatorOptions { boolean upper = true; [EnforceRange] long diagonal = 0; }; partial interface MLGraphBuilder { MLOperand triangular(MLOperand input, optional MLTriangularOptions options = {}); }; partial dictionary MLOpSupportLimits { MLSingleInputSupportLimits triangular; }; partial interface MLGraphBuilder { MLOperand where(MLOperand condition, MLOperand trueValue, MLOperand falseValue, optional MLOperatorOptions options = {}); }; dictionary MLWhereSupportLimits { MLTensorLimits condition; MLTensorLimits trueValue; MLTensorLimits falseValue; MLDataTypeLimits output; }; partial dictionary MLOpSupportLimits { MLWhereSupportLimits where; };