onnx-tensorflow icon indicating copy to clipboard operation
onnx-tensorflow copied to clipboard

KeyError: 'ai.onnx.ml' while converting lightgbm model to tensorflow

Open DmitryBe opened this issue 5 years ago • 3 comments

Exception*

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-52-1f2c0e94cbb7> in <module>
      1 warnings.filterwarnings('ignore') # Ignore all the warning messages in this tutorial
      2 
----> 3 tf_rep = prepare(onnx_model) # Import the ONNX model to Tensorflow

/opt/conda/lib/python3.7/site-packages/onnx_tf/backend.py in prepare(cls, model, device, strict, **kwargs)
     53     super(TensorflowBackend, cls).prepare(model, device, **kwargs)
     54 
---> 55     return cls.onnx_model_to_tensorflow_rep(model, strict)
     56 
     57   @classmethod

/opt/conda/lib/python3.7/site-packages/onnx_tf/backend.py in onnx_model_to_tensorflow_rep(cls, model, strict)
     73     else:
     74       opset_import = model.opset_import
---> 75     return cls._onnx_graph_to_tensorflow_rep(model.graph, opset_import, strict)
     76 
     77   @classmethod

/opt/conda/lib/python3.7/site-packages/onnx_tf/backend.py in _onnx_graph_to_tensorflow_rep(cls, graph_def, opset, strict)
    127         onnx_node = OnnxNode(node)
    128         output_ops = cls._onnx_node_to_tensorflow_op(
--> 129             onnx_node, tensor_dict, handlers, opset=opset, strict=strict)
    130         curr_node_output_map = dict(zip(onnx_node.outputs, output_ops))
    131         tensor_dict.update(curr_node_output_map)

/opt/conda/lib/python3.7/site-packages/onnx_tf/backend.py in _onnx_node_to_tensorflow_op(cls, node, tensor_dict, handlers, opset, strict)
    220     """
    221     handlers = handlers or cls._get_handlers(opset)
--> 222     handler = handlers[node.domain].get(node.op_type, None)
    223     if handler:
    224       return handler.handle(node, tensor_dict=tensor_dict, strict=strict)

KeyError: 'ai.onnx.ml'

To Reproduce

!pip install onnxmltools onnx-tf lightgbm 

from lightgbm import LGBMClassifier, LGBMRegressor
import numpy
import tensorflow
import onnxmltools
from onnxmltools.convert.common.data_types import FloatTensorType
import onnx
from onnx_tf.backend import prepare

model = LGBMRegressor(n_estimators=1, min_child_samples=1)
X = [[0, 1], [1, 1], [2, 0]]
X = numpy.array(X, dtype=numpy.float32)
y = numpy.array([100, -10, 50], dtype=numpy.float32)
model.fit(X, y)

onnx_model = onnxmltools.convert_lightgbm(model, initial_types=[('input', FloatTensorType([1, 2]))])
tf_rep = prepare(onnx_model) # Import the ONNX model to Tensorflow

Python, ONNX, ONNX-TF, Tensorflow version

This section can be obtained by running get_version.py from util folder.

  • Python version: 3.7.3
  • ONNX version: 1.5.0
  • ONNX-TF version: 1.3.0
  • Tensorflow version: 1.13.1

DmitryBe avatar Aug 21 '19 11:08 DmitryBe