@@ -3746,6 +3746,38 @@ <h1 id="Operators">Operators</h1>
37463746 < td class ="futureColumn "> </ td >
37473747 < td > Exact</ td >
37483748 </ tr >
3749+ < tr class ="reorganizationOperator ">
3750+ < td > Data reorganization</ td >
3751+ < td > Reshape To 1D</ td >
3752+ < td class ="detailsColumn "> Reinterpret the view of the tensor, flattening into a long 1D tensor.
3753+
3754+ < code > function flattenTo1D(input, axis)
3755+ output = input
3756+ output.dimensions = reduceProduct(input.dimensions)
3757+ return output
3758+ endfunction</ code > </ td >
3759+ < td class ="webnnColumn "> reshape (plus caller logic)</ td >
3760+ < td class ="onnxColumn "> ?</ td >
3761+ < td class ="dmlColumn "> NA, no actual data change, just update the TENSOR_DESC</ td >
3762+ < td class ="xnnPackColumn "> ?</ td >
3763+ < td class ="stableHloColumn "> ?</ td >
3764+ < td class ="tosaColumn "> ?</ td >
3765+ < td class ="numpyColumn "> ?</ td >
3766+ < td class ="tensorFlowColumn "> ?</ td >
3767+ < td class ="tensorFlowLiteColumn "> ?</ td >
3768+ < td class ="pytorchColumn "> ?</ td >
3769+ < td class ="coreMlColumn "> ?</ td >
3770+ < td class ="bnnsColumn "> ?</ td >
3771+ < td class ="mpsColumn "> ?</ td >
3772+ < td class ="mlxColumn "> ?</ td >
3773+ < td class ="ncnnColumn "> ?</ td >
3774+ < td class ="cntkColumn "> ?</ td >
3775+ < td class ="openVinoColumn "> ?</ td >
3776+ < td class ="oneDnnColumn "> ?</ td >
3777+ < td class ="annColumn "> ?</ td >
3778+ < td class ="futureColumn "> </ td >
3779+ < td > Exact</ td >
3780+ </ tr >
37493781 < tr class ="reorganizationOperator ">
37503782 < td > Data reorganization</ td >
37513783 < td > Reshape To 2D</ td >
@@ -4858,11 +4890,11 @@ <h1 id="Operators">Operators</h1>
48584890 < tr class ="poolingOperator ">
48594891 < td > Pooling</ td >
48604892 < td > Pool Maximum Spatial Dimensions Global</ td >
4861- < td class ="detailsColumn "> < code > < code > function poolMaximumSpatialDimensionsGlobal(input)
4893+ < td class ="detailsColumn "> < code > function poolMaximumSpatialDimensionsGlobal(input)
48624894 axes = increasingSequence(2, input.rank) // Skip N and C dimensions.
48634895 return reduceMax(input, axes, keepDimensions=true)
48644896 // Alternately poolMaximum with windowDimensions equal to the input sizes after N,C.
4865- endfunction</ code > </ code > </ td >
4897+ endfunction</ code > </ td >
48664898 < td class ="webnnColumn "> maxPool2d / reduceMax</ td >
48674899 < td class ="onnxColumn "> < a href ="https://github.com/onnx/onnx/blob/master/docs/Operators.md#GlobalMaxPool "> GlobalMaxPool</ a > </ td >
48684900 < td class ="dmlColumn "> DML_OPERATOR_MAX_POOLING with output being 1 element</ td >
@@ -4888,9 +4920,17 @@ <h1 id="Operators">Operators</h1>
48884920 < tr class ="poolingOperator ">
48894921 < td > Pooling</ td >
48904922 < td > Unpool Maximum</ td >
4891- < td class ="detailsColumn "> Opposite of MaxPool.
4923+ < td class ="detailsColumn "> Partial opposite of MaxPool.
48924924Fill the output tensor of the given shape (either explicit or the input shape plus padding) with zeros.
4893- Then write each value from the input tensor into the output tensor at the element offset from the corresponding indices array.</ td >
4925+ Then write each value from the input tensor into the output tensor at the element offset from the corresponding indices array.
4926+
4927+ < code > function unpool(input, indices, kernelShape, padding, strides)
4928+ outputDimensions = ... TODO: compute shape
4929+ output = zeros(input.dataType, outputDimensions)
4930+ inputFlattened = flattenTo1D(input)
4931+ indicesFlattened = flattenTo1D(indices)
4932+ return scatterElements(output, indicesFlattened, input, axis=0)
4933+ endfunction</ code > </ td >
48944934 < td class ="webnnColumn "> ?</ td >
48954935 < td class ="onnxColumn "> < a href ="https://github.com/onnx/onnx/blob/rel-1.4.0/docs/Operators.md#MaxUnpool "> MaxUnpool</ a > </ td >
48964936 < td class ="dmlColumn "> ---</ td >
0 commit comments