Spaces:
Running
Running
"""This file exports ONNX ops for opset 18. | |
Note [ONNX Operators that are added/updated in opset 18] | |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
https://github.com/onnx/onnx/blob/main/docs/Changelog.md#version-18-of-the-default-onnx-operator-set | |
New operators: | |
CenterCropPad | |
Col2Im | |
Mish | |
OptionalGetElement | |
OptionalHasElement | |
Pad | |
Resize | |
ScatterElements | |
ScatterND | |
""" | |
import functools | |
from typing import Sequence | |
from torch import _C | |
from torch.onnx import symbolic_helper | |
from torch.onnx._internal import _beartype, registration | |
# EDITING THIS FILE? READ THIS FIRST! | |
# see Note [Edit Symbolic Files] in symbolic_helper.py | |
__all__ = ["col2im"] | |
_onnx_symbolic = functools.partial(registration.onnx_symbolic, opset=18) | |
def col2im( | |
g, | |
input: _C.Value, | |
output_size: _C.Value, | |
kernel_size: _C.Value, | |
dilation: Sequence[int], | |
padding: Sequence[int], | |
stride: Sequence[int], | |
): | |
# convert [i0, i1, ..., in] into [i0, i0, i1, i1, ..., in, in] | |
adjusted_padding = [] | |
for pad in padding: | |
for _ in range(2): | |
adjusted_padding.append(pad) | |
num_dimensional_axis = symbolic_helper._get_tensor_sizes(output_size)[0] | |
if not adjusted_padding: | |
adjusted_padding = [0, 0] * num_dimensional_axis | |
if not dilation: | |
dilation = [1] * num_dimensional_axis | |
if not stride: | |
stride = [1] * num_dimensional_axis | |
return g.op( | |
"Col2Im", | |
input, | |
output_size, | |
kernel_size, | |
dilations_i=dilation, | |
pads_i=adjusted_padding, | |
strides_i=stride, | |
) | |