// 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 MLDeviceType { "cpu", "gpu" }; enum MLPowerPreference { "default", "high-performance", "low-power" }; dictionary MLContextOptions { MLDeviceType deviceType = "cpu"; MLPowerPreference powerPreference = "default"; }; [SecureContext, Exposed=(Window, DedicatedWorker)] interface ML { Promise createContext(optional MLContextOptions options = {}); Promise createContext(GPUDevice gpuDevice); [Exposed=(DedicatedWorker)] MLContext createContextSync(optional MLContextOptions options = {}); [Exposed=(DedicatedWorker)] MLContext createContextSync(GPUDevice gpuDevice); }; typedef record MLNamedArrayBufferViews; [SecureContext, Exposed=(Window, DedicatedWorker)] interface MLContext {}; partial interface MLContext { [Exposed=(DedicatedWorker)] undefined computeSync( MLGraph graph, MLNamedArrayBufferViews inputs, MLNamedArrayBufferViews outputs); }; partial interface MLContext { Promise compute( MLGraph graph, MLNamedArrayBufferViews inputs, MLNamedArrayBufferViews outputs); }; partial interface MLContext { MLCommandEncoder createCommandEncoder(); }; enum MLInputOperandLayout { "nchw", "nhwc" }; enum MLOperandType { "float32", "float16", "int32", "uint32", "int8", "uint8" }; dictionary MLOperandDescriptor { // The operand type. required MLOperandType type; // The dimensions field is only required for tensor operands. sequence dimensions; }; [SecureContext, Exposed=(Window, DedicatedWorker)] interface MLOperand {}; [SecureContext, Exposed=(Window, DedicatedWorker)] interface MLOperator {}; typedef record MLNamedOperands; dictionary MLBufferResourceView { required GPUBuffer resource; unsigned long long offset = 0; unsigned long long size; }; typedef (ArrayBufferView or MLBufferResourceView) MLBufferView; [SecureContext, Exposed=(Window, DedicatedWorker)] interface MLGraphBuilder { // Construct the graph builder from the context. constructor(MLContext context); // Create an operand for a graph input. MLOperand input(DOMString name, MLOperandDescriptor desc); // Create an operand for a graph constant. MLOperand constant(MLOperandDescriptor desc, MLBufferView bufferView); // Create a single-value operand from the specified number of the specified type. MLOperand constant(double value, optional MLOperandType type = "float32"); // Compile the graph up to the specified output operands asynchronously. Promise build(MLNamedOperands outputs); // Compile the graph up to the specified output operands synchronously. [Exposed=(DedicatedWorker)] MLGraph buildSync(MLNamedOperands outputs); }; dictionary MLBatchNormalizationOptions { MLOperand scale; MLOperand bias; long axis = 1; float epsilon = 1e-5; MLOperator activation; }; partial interface MLGraphBuilder { MLOperand batchNormalization(MLOperand input, MLOperand mean, MLOperand variance, optional MLBatchNormalizationOptions options = {}); }; dictionary MLClampOptions { float minValue; float maxValue; }; partial interface MLGraphBuilder { MLOperand clamp(MLOperand x, optional MLClampOptions options = {}); MLOperator clamp(optional MLClampOptions options = {}); }; partial interface MLGraphBuilder { MLOperand concat(sequence inputs, long axis); }; enum MLConv2dFilterOperandLayout { "oihw", "hwio", "ohwi", "ihwo" }; enum MLAutoPad { "explicit", "same-upper", "same-lower" }; dictionary MLConv2dOptions { sequence padding; sequence strides; sequence dilations; MLAutoPad autoPad = "explicit"; unsigned long groups = 1; MLInputOperandLayout inputLayout = "nchw"; MLConv2dFilterOperandLayout filterLayout = "oihw"; MLOperand bias; MLOperator activation; }; partial interface MLGraphBuilder { MLOperand conv2d(MLOperand input, MLOperand filter, optional MLConv2dOptions options = {}); }; enum MLConvTranspose2dFilterOperandLayout { "iohw", "hwoi", "ohwi" }; dictionary MLConvTranspose2dOptions { sequence padding; sequence strides; sequence dilations; sequence outputPadding; sequence outputSizes; MLAutoPad autoPad = "explicit"; unsigned long groups = 1; MLInputOperandLayout inputLayout = "nchw"; MLConvTranspose2dFilterOperandLayout filterLayout = "iohw"; MLOperand bias; MLOperator activation; }; partial interface MLGraphBuilder { MLOperand convTranspose2d(MLOperand input, MLOperand filter, optional MLConvTranspose2dOptions options = {}); }; partial interface MLGraphBuilder { MLOperand add(MLOperand a, MLOperand b); MLOperand sub(MLOperand a, MLOperand b); MLOperand mul(MLOperand a, MLOperand b); MLOperand div(MLOperand a, MLOperand b); MLOperand max(MLOperand a, MLOperand b); MLOperand min(MLOperand a, MLOperand b); MLOperand pow(MLOperand a, MLOperand b); }; partial interface MLGraphBuilder { MLOperand abs(MLOperand x); MLOperand ceil(MLOperand x); MLOperand cos(MLOperand x); MLOperand exp(MLOperand x); MLOperand floor(MLOperand x); MLOperand log(MLOperand x); MLOperand neg(MLOperand x); MLOperand sin(MLOperand x); MLOperand tan(MLOperand x); }; dictionary MLEluOptions { float alpha = 1; }; partial interface MLGraphBuilder { MLOperand elu(MLOperand x, optional MLEluOptions options = {}); MLOperator elu(optional MLEluOptions options = {}); }; dictionary MLGemmOptions { MLOperand c; float alpha = 1.0; float beta = 1.0; boolean aTranspose = false; boolean bTranspose = false; }; partial interface MLGraphBuilder { MLOperand gemm(MLOperand a, MLOperand b, optional MLGemmOptions options = {}); }; enum MLRecurrentNetworkWeightLayout { "zrn", // update-reset-new gate ordering "rzn" // reset-update-new gate ordering }; enum MLRecurrentNetworkDirection { "forward", "backward", "both" }; dictionary MLGruOptions { MLOperand bias; MLOperand recurrentBias; MLOperand initialHiddenState; boolean resetAfter = true; boolean returnSequence = false; MLRecurrentNetworkDirection direction = "forward"; MLRecurrentNetworkWeightLayout layout = "zrn"; sequence activations; }; partial interface MLGraphBuilder { sequence gru(MLOperand input, MLOperand weight, MLOperand recurrentWeight, long steps, long hiddenSize, optional MLGruOptions options = {}); }; dictionary MLGruCellOptions { MLOperand bias; MLOperand recurrentBias; boolean resetAfter = true; MLRecurrentNetworkWeightLayout layout = "zrn"; sequence activations; }; partial interface MLGraphBuilder { MLOperand gruCell(MLOperand input, MLOperand weight, MLOperand recurrentWeight, MLOperand hiddenState, long hiddenSize, optional MLGruCellOptions options = {}); }; dictionary MLHardSigmoidOptions { float alpha = 0.2; float beta = 0.5; }; partial interface MLGraphBuilder { MLOperand hardSigmoid(MLOperand x, optional MLHardSigmoidOptions options = {}); MLOperator hardSigmoid(optional MLHardSigmoidOptions options = {}); }; partial interface MLGraphBuilder { MLOperand hardSwish(MLOperand x); MLOperator hardSwish(); }; dictionary MLInstanceNormalizationOptions { MLOperand scale; MLOperand bias; float epsilon = 1e-5; MLInputOperandLayout layout = "nchw"; }; partial interface MLGraphBuilder { MLOperand instanceNormalization(MLOperand input, optional MLInstanceNormalizationOptions options = {}); }; dictionary MLLeakyReluOptions { float alpha = 0.01; }; partial interface MLGraphBuilder { MLOperand leakyRelu(MLOperand x, optional MLLeakyReluOptions options = {}); MLOperator leakyRelu(optional MLLeakyReluOptions options = {}); }; partial interface MLGraphBuilder { MLOperand matmul(MLOperand a, MLOperand b); }; dictionary MLLinearOptions { float alpha = 1; float beta = 0; }; partial interface MLGraphBuilder { MLOperand linear(MLOperand x, optional MLLinearOptions options = {}); MLOperator linear(optional MLLinearOptions options = {}); }; enum MLPaddingMode { "constant", "edge", "reflection", "symmetric" }; dictionary MLPadOptions { MLPaddingMode mode = "constant"; float value = 0; }; partial interface MLGraphBuilder { MLOperand pad(MLOperand input, MLOperand padding, optional MLPadOptions options = {}); }; enum MLRoundingType { "floor", "ceil" }; dictionary MLPool2dOptions { sequence windowDimensions; sequence padding; sequence strides; sequence dilations; MLAutoPad autoPad = "explicit"; MLInputOperandLayout layout = "nchw"; MLRoundingType roundingType = "floor"; sequence 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 = {}); }; dictionary MLReduceOptions { sequence axes = null; 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 interface MLGraphBuilder { MLOperand relu(MLOperand x); MLOperator relu(); }; enum MLInterpolationMode { "nearest-neighbor", "linear" }; dictionary MLResample2dOptions { MLInterpolationMode mode = "nearest-neighbor"; sequence scales; sequence sizes; sequence axes; }; partial interface MLGraphBuilder { MLOperand resample2d(MLOperand input, optional MLResample2dOptions options = {}); }; partial interface MLGraphBuilder { MLOperand reshape(MLOperand input, sequence newShape); }; partial interface MLGraphBuilder { MLOperand sigmoid(MLOperand x); MLOperator sigmoid(); }; dictionary MLSliceOptions { sequence axes; }; partial interface MLGraphBuilder { MLOperand slice(MLOperand input, sequence starts, sequence sizes, optional MLSliceOptions options = {}); }; partial interface MLGraphBuilder { MLOperand softmax(MLOperand x); }; dictionary MLSoftplusOptions { float steepness = 1; }; partial interface MLGraphBuilder { MLOperand softplus(MLOperand x, optional MLSoftplusOptions options = {}); MLOperator softplus(optional MLSoftplusOptions options = {}); }; partial interface MLGraphBuilder { MLOperand softsign(MLOperand x); MLOperator softsign(); }; dictionary MLSplitOptions { long axis = 0; }; partial interface MLGraphBuilder { sequence split(MLOperand input, (unsigned long or sequence) splits, optional MLSplitOptions options = {}); }; dictionary MLSqueezeOptions { sequence axes; }; partial interface MLGraphBuilder { MLOperand squeeze(MLOperand input, optional MLSqueezeOptions options = {}); }; partial interface MLGraphBuilder { MLOperand tanh(MLOperand x); MLOperator tanh(); }; dictionary MLTransposeOptions { sequence permutation; }; partial interface MLGraphBuilder { MLOperand transpose(MLOperand input, optional MLTransposeOptions options = {}); }; [SecureContext, Exposed=(Window, DedicatedWorker)] interface MLGraph {}; typedef (GPUBuffer or GPUTexture) MLGPUResource; typedef record MLNamedGPUResources; [SecureContext, Exposed=(Window, DedicatedWorker)] interface MLCommandEncoder {}; partial interface MLCommandEncoder { undefined initializeGraph(MLGraph graph); }; partial interface MLCommandEncoder { undefined dispatch(MLGraph graph, MLNamedGPUResources inputs, MLNamedGPUResources outputs); }; partial interface MLCommandEncoder { GPUCommandBuffer finish(optional GPUCommandBufferDescriptor descriptor = {}); };