sklearn-onnx
sklearn-onnx copied to clipboard
'numpy.bool_' object has no attribute 'encode'
I have a sklearn.neural_network.MLPClassifier()
model, where each input has two float fields, and outputs a boolean. When I call the following code:
from skl2onnx import to_onnx
onx = to_onnx(reg, X_train[:1])
with open("output.onnx", "wb") as f:
f.write(onx.SerializeToString())
I get the following error:
Traceback (most recent call last):
File "C:\Users\moshe\Desktop\Foolish_Wisdom\FT\ml-analysis\main.py", line 82, in <module>
onx = to_onnx(reg, X_train[:1])
File "C:\Users\moshe\Desktop\Foolish_Wisdom\FT\ml-analysis\venv\lib\site-packages\skl2onnx\convert.py", line 210, in to_onnx
return convert_sklearn(model, initial_types=initial_types,
File "C:\Users\moshe\Desktop\Foolish_Wisdom\FT\ml-analysis\venv\lib\site-packages\skl2onnx\convert.py", line 149, in convert_sklearn
topology = parse_sklearn_model(
File "C:\Users\moshe\Desktop\Foolish_Wisdom\FT\ml-analysis\venv\lib\site-packages\skl2onnx\_parse.py", line 623, in parse_sklearn_model
outputs = parse_sklearn(scope, model, inputs,
File "C:\Users\moshe\Desktop\Foolish_Wisdom\FT\ml-analysis\venv\lib\site-packages\skl2onnx\_parse.py", line 530, in parse_sklearn
res = _parse_sklearn(
File "C:\Users\moshe\Desktop\Foolish_Wisdom\FT\ml-analysis\venv\lib\site-packages\skl2onnx\_parse.py", line 486, in _parse_sklearn
outputs = sklearn_parsers_map[tmodel](scope, model, inputs,
File "C:\Users\moshe\Desktop\Foolish_Wisdom\FT\ml-analysis\venv\lib\site-packages\skl2onnx\_parse.py", line 373, in _parse_sklearn_classifier
classes = np.array([s.encode('utf-8') for s in classes])
File "C:\Users\moshe\Desktop\Foolish_Wisdom\FT\ml-analysis\venv\lib\site-packages\skl2onnx\_parse.py", line 373, in <listcomp>
classes = np.array([s.encode('utf-8') for s in classes])
AttributeError: 'numpy.bool_' object has no attribute 'encode'
Is this something I can fix myself? If I need to provide more information, please tell me.
Did you train it with boolean labels?
Sorry for taking so long to respond.
Did you train it with boolean labels?
Yes, my y_train
was defined as numpy.array(targets, dtype=numpy.bool_)
.
Is it possible to cast the booleans into integers? That would the simplest way here. In a short term, I could include that in the error message.