Source code for coremltools.converters.mil.mil.ops.defs.iOS17.conv

#  Copyright (c) 2023, Apple Inc. All rights reserved.
#
#  Use of this source code is governed by a BSD-3-clause license that can be
#  found in the LICENSE.txt file or at https://opensource.org/licenses/BSD-3-Clause

from coremltools.converters.mil.mil import types
from coremltools.converters.mil.mil.input_type import InputSpec, TensorInputType
from coremltools.converters.mil.mil.ops.defs._op_reqs import register_op
from coremltools.converters.mil.mil.ops.defs.iOS15.conv import conv as _conv_iOS15
from coremltools.converters.mil.mil.ops.defs.iOS15.conv import (
    conv_transpose as _conv_transpose_iOS15,
)
from coremltools.converters.mil.mil.ops.defs.iOS17 import _IOS17_TARGET


[docs]@register_op(opset_version=_IOS17_TARGET) class conv(_conv_iOS15): """ Perform convolution over input. Supports 1-D, 2-D, and 3-D convolution. The difference between this version and the iOS 15 :py:class:`~.iOS15.conv.conv` is that the ``weight`` and ``bias`` may have a different dtype than the input/output. """ input_spec = InputSpec( x=TensorInputType(type_domain="T"), weight=TensorInputType(type_domain="U"), bias=TensorInputType(optional=True, type_domain="U"), strides=TensorInputType(const=True, optional=True, type_domain=types.int32), pad_type=TensorInputType(const=True, optional=True, type_domain=types.str), pad=TensorInputType(const=True, optional=True, type_domain=types.int32), dilations=TensorInputType(const=True, optional=True, type_domain=types.int32), groups=TensorInputType(const=True, optional=True, type_domain=types.int32), ) type_domains = { "T": (types.fp16, types.fp32), "U": (types.fp16, types.fp32), }
[docs]@register_op(opset_version=_IOS17_TARGET) class conv_transpose(_conv_transpose_iOS15): """ Perform transposed convolution (also known as deconvolution and fractionally stride convolution) over input. ``conv_transpose`` can also be used to compute the gradient of conv. Supports 1-D, 2-D, and 3-D convolution. The differences between this version and the iOS 15 :py:class:`~.iOS15.conv.conv_transpose` are: - ``weight`` and ``bias`` may have a different dtype than the input/output. - ``weight`` doesn't have to be const. """ input_spec = InputSpec( x=TensorInputType(type_domain="T"), weight=TensorInputType(type_domain="U"), bias=TensorInputType(optional=True, type_domain="U"), pad=TensorInputType(const=True, optional=True, type_domain=types.int32), output_shape=TensorInputType(const=True, optional=True, type_domain=types.int32), pad_type=TensorInputType(const=True, optional=True, type_domain=types.str), strides=TensorInputType(const=True, optional=True, type_domain=types.int32), dilations=TensorInputType(const=True, optional=True, type_domain=types.int32), groups=TensorInputType(const=True, optional=True, type_domain=types.int32), ) type_domains = { "T": (types.fp16, types.fp32), "U": (types.fp16, types.fp32), }