Unable to convert `1j` complex constant
- Dominant language
- Python
- Stars
- 5.4k
- Forks
- 850
- Avg merge
- 4d 5h
- Merged PRs (30d)
- 10
Description
## 🐞Describing the bug
Coremltools is unable to convert `1j` complex constant
## Stack Trace
```
➜ python test.py
Fail to import BlobReader from libmilstoragepython. No module named 'coremltools.libmilstoragepython'
Fail to import BlobWriter from libmilstoragepython. No module named 'coremltools.libmilstoragepython'
Support for converting Torch Script Models is experimental. If possible you should use a traced model for conversion.
Converting PyTorch Frontend ==> MIL Ops: 0%| | 0/2 [00:00
coremltools.convert(
File "/home/aalvarez/Projects/coremltools/coremltools/converters/_converters_entry.py", line 553, in convert
mlmodel = mil_convert(
File "/home/aalvarez/Projects/coremltools/coremltools/converters/mil/converter.py", line 188, in mil_convert
return _mil_convert(model, convert_from, convert_to, ConverterRegistry, MLModel, compute_units, **kwargs)
File "/home/aalvarez/Projects/coremltools/coremltools/converters/mil/converter.py", line 212, in _mil_convert
proto, mil_program = mil_convert_to_proto(
File "/home/aalvarez/Projects/coremltools/coremltools/converters/mil/converter.py", line 286, in mil_convert_to_proto
prog = frontend_converter(model, **kwargs)
File "/home/aalvarez/Projects/coremltools/coremltools/converters/mil/converter.py", line 108, in __call__
return load(*args, **kwargs)
File "/home/aalvarez/Projects/coremltools/coremltools/converters/mil/frontend/torch/load.py", line 75, in load
return _perform_torch_convert(converter, debug)
File "/home/aalvarez/Projects/coremltools/coremltools/converters/mil/frontend/torch/load.py", line 114, in _perform_torch_convert
prog = converter.convert()
File "/home/aalvarez/Projects/coremltools/coremltools/converters/mil/frontend/torch/converter.py", line 484, in convert
convert_nodes(self.context, self.graph)
File "/home/aalvarez/Projects/coremltools/coremltools/converters/mil/frontend/torch/ops.py", line 93, in convert_nodes
add_op(context, node)
File "/home/aalvarez/Projects/coremltools/coremltools/converters/mil/frontend/torch/ops.py", line 406, in constant
const = _construct_constant(val, name)
File "/home/aalvarez/Projects/coremltools/coremltools/converters/mil/frontend/torch/ops.py", line 290, in _construct_constant
return mb.const(val=val, name=name)
File "/home/aalvarez/Projects/coremltools/coremltools/converters/mil/mil/ops/registry.py", line 183, in add_op
return cls._add_op(op_cls_to_add, **kwargs)
File "/home/aalvarez/Projects/coremltools/coremltools/converters/mil/mil/builder.py", line 182, in _add_op
new_op.type_value_inference()
File "/home/aalvarez/Projects/coremltools/coremltools/converters/mil/mil/operation.py", line 253, in type_value_inference
output_types = self.type_inference()
File "/home/aalvarez/Projects/coremltools/coremltools/converters/mil/mil/ops/defs/iOS15/control_flow.py", line 167, in type_inference
builtin_type, _ = self._get_type_val(self.val.val)
File "/home/aalvarez/Projects/coremltools/coremltools/converters/mil/mil/ops/defs/iOS15/control_flow.py", line 205, in _get_type_val
raise ValueError(f"Unknown value for constant: {value}")
ValueError: Unknown value for constant: 1j
```
## To Reproduce
just run
```python
import torch
import coremltools
class Model(torch.nn.Module):
def forward(self, x):
return x * 1j
coremltools.convert(
torch.jit.script(Model(),eval()),
convert_to="mlprogram",
compute_precision=coremltools.precision.FLOAT16,
inputs=[coremltools.TensorType(shape=(1,1))],
debug=True,
)
```
## System environment (please complete the following information):
```
coremltools 7.0
torch 2.0.0
```
Contributor guide
Assessment
This issue has not been assessed yet.