Я пишу некоторый код, который использует Pipeline для запуска классификаторов дерева решений, импутеров и тому подобного.Я пытаюсь преобразовать эту модель конвейера в файл .onnx.У меня возникают некоторые проблемы с этим, особенно с аргументами метода convert_sklearn.
Я выполняю это на ноутбуке Jupyter и уже рассмотрел несколько различных способов реализации convert_sklearn и создания нового метода.,Я также попытался изменить свой фрейм данных, потому что подозреваю, что это может быть причиной моих проблем, но пока безрезультатно.
Это блок, который использует convert_sklearn:
from skl2onnx import convert_sklearn
from skl2onnx.common.data_types import FloatTensorType
input_types = dict([(x, FloatTensorType([1, 1])) for x in var_train.columns])
try:
model_onnx = convert_sklearn(pipeline,
initial_types=list(input_types.items()))
except Exception as e:
print(e)
with open("pipeline.onnx", "wb") as f:
f.write(model_onnx.SerializeToString())
Если это поможет, вот код, в котором я установил различные фреймы данных
varset = pd.DataFrame(data.iloc[:,:-1])
targetset = pd.DataFrame(data.iloc[:,15])
from sklearn.model_selection import train_test_split
var_train, var_test, tar_train, tar_test = train_test_split(varset, targetset, test_size = 0.15)
data_train = pd.concat([var_train, tar_train], axis=1)
data_test = pd.concat([var_test, tar_test], axis = 1)
Файл onnx никогда не создается, скорее он дает мне следующее исключение во всей его полноте:
For operator SklearnSimpleImputer (type: SklearnSimpleImputer), at most 1 input(s) is(are) supported but we got 15 output(s) which are ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O']
Кто-нибудь знает, что может быть причиной этой ошибки?Спасибо!