Как преобразовать файл модели Core ML в другой формат, чтобы он мог работать на сервере - PullRequest
0 голосов
/ 22 февраля 2020

Модель Core ML (.mlmodel) прошла обучение, но я обнаружил, что она может работать только на MacOS. (Но я хочу запустить его на сервере Linux)

Я попытался преобразовать его в формат ONNX, но не получилось.

onnxmltools и следующий python код был использован для преобразования:

import onnxmltools
import coremltools

# Load a Core ML model
coreml_model = coremltools.utils.load_spec('example.mlmodel')

# Convert the Core ML model into ONNX
onnx_model = onnxmltools.convert_coreml(coreml_model, 'Example Model')

# Save as protobuf
onnxmltools.utils.save_model(onnx_model, 'example.onnx')

Но после запуска программы выше

Traceback (most recent call last):
  File "convertToOnnx.py", line 8, in <module>
    onnx_model = onnxmltools.convert_coreml(coreml_model, 'Post Rating Model')
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/onnxmltools/convert/main.py", line 18, in convert_coreml
    custom_conversion_functions, custom_shape_calculators)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/onnxmltools/convert/coreml/convert.py", line 60, in convert
    topology = parse_coreml(spec, initial_types, target_opset, custom_conversion_functions, custom_shape_calculators)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/onnxmltools/convert/coreml/_parse.py", line 467, in parse_coreml
    topology.compile()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/onnxconverter_common/topology.py", line 632, in compile
    self._infer_all_types()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/onnxconverter_common/topology.py", line 508, in _infer_all_types
    operator.infer_types()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/onnxconverter_common/topology.py", line 110, in infer_types
    registration.get_shape_calculator(self.type)(self)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/onnxmltools/convert/coreml/shape_calculators/OneHotEncoder.py", line 36, in calculate_one_hot_encoder_output_shapes
    raise ValueError('Categorical indexes are missing')
ValueError: Categorical indexes are missing

было показано следующее сообщение об ошибке Как я могу решить ошибку выше? Или как я могу использовать модель Core ML на сервере Linux? (Есть ли другой способ преобразования модели?)

...