coremltools icon indicating copy to clipboard operation
coremltools copied to clipboard

ValueError: # of input channels is44 not divisible by groups 1

Open sniklaus opened this issue 1 year ago • 8 comments

Description

coremltools.convert will unnecessarily raise an exception if C_in is a Symbol here.

Stack Trace

Traceback (most recent call last):
  File "/home/sniklaus/Downloads/bidir_conversion.py", line 436, in <module>
    objModel = coremltools.convert(
               ^^^^^^^^^^^^^^^^^^^^
  File "coremltools/converters/_converters_entry.py", line 581, in convert
    mlmodel = mil_convert(
              ^^^^^^^^^^^^
  File "coremltools/converters/mil/converter.py", line 188, in mil_convert
    return _mil_convert(model, convert_from, convert_to, ConverterRegistry, MLModel, compute_units, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "coremltools/converters/mil/converter.py", line 212, in _mil_convert
    proto, mil_program = mil_convert_to_proto(
                         ^^^^^^^^^^^^^^^^^^^^^
  File "coremltools/converters/mil/converter.py", line 288, in mil_convert_to_proto
    prog = frontend_converter(model, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "coremltools/converters/mil/converter.py", line 108, in __call__
    return load(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "coremltools/converters/mil/frontend/torch/load.py", line 82, in load
    return _perform_torch_convert(converter, debug)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "coremltools/converters/mil/frontend/torch/load.py", line 116, in _perform_torch_convert
    prog = converter.convert()
           ^^^^^^^^^^^^^^^^^^^
  File "coremltools/converters/mil/frontend/torch/converter.py", line 581, in convert
    convert_nodes(self.context, self.graph)
  File "coremltools/converters/mil/frontend/torch/ops.py", line 86, in convert_nodes
    raise e     # re-raise exception
    ^^^^^^^
  File "coremltools/converters/mil/frontend/torch/ops.py", line 81, in convert_nodes
    convert_single_node(context, node)
  File "coremltools/converters/mil/frontend/torch/ops.py", line 134, in convert_single_node
    add_op(context, node)
  File "coremltools/converters/mil/frontend/torch/ops.py", line 1088, in _convolution
    conv = mb.conv(**kwargs)
           ^^^^^^^^^^^^^^^^^
  File "coremltools/converters/mil/mil/ops/registry.py", line 182, in add_op
    return cls._add_op(op_cls_to_add, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "coremltools/converters/mil/mil/builder.py", line 202, in _add_op
    new_op.type_value_inference()
  File "coremltools/converters/mil/mil/operation.py", line 258, in type_value_inference
    output_types = self.type_inference()
                   ^^^^^^^^^^^^^^^^^^^^^
  File "coremltools/converters/mil/mil/ops/defs/iOS15/conv.py", line 165, in type_inference
    raise ValueError(msg.format(C_in, groups))
ValueError: # of input channels is44 not divisible by groups 1

To Reproduce

I am afraid that I can't share the model details here since it is proprietary, my apologies.

System

  • coremltools version: 7.2
  • OS (e.g. MacOS version or Linux type): Debian 13
  • PyTorch version: 2.1.2

sniklaus avatar Sep 11 '24 16:09 sniklaus