Skip to content

Commit 962e08b

Browse files
committed
Add maxUnpool algorithm and flattenTo1D
1 parent 6f950d1 commit 962e08b

File tree

1 file changed

+44
-4
lines changed

1 file changed

+44
-4
lines changed

OperatorFormulas.html

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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.
48924924
Fill 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

Comments
 (0)