在使用converers .sklearn.convert将SVC facecclassification模型转换为Co



我已经训练了一个基于FaceNet的人脸分类模型,当我试图使用converters.sklearn.convert将模型转换为CoreML模型时,我没有默认嵌入到它的类标签,我如何将类标签添加到我的CoreML模型。

转换模型的当前脚本

classFeatureNames = ("Prediction","Probability")
coreml_model = ct.converters.sklearn.convert(model,input_features='inputArray', output_feature_names=classNames)
coreml_model.save("celebritySix.mlmodel")

使用上述脚本生成的模型返回标签为,[0,1,2,3,4,5],而我期望检测到的人员的各自名称。

From coremltools convert docs:

"如果它是一个分类器,output_feature_names应该是一个2元组名称,给出顶级类预测和每个类的分数数组(默认为" classLabel "one_answers" classScores ")。">

大多数scikit-learn估计器都有一个classes_属性,用于存储标签。要么是模型没有使用正确的类标签进行训练,要么是coremltools在转换时没有正确应用属性。

绝笔Y/N标签:

import numpy as np
from sklearn.datasets import make_classification
from sklearn.svm import SVC
import coremltools
X, y = make_classification(n_clusters_per_class=1, n_informative=4, n_classes=2)
y_new = np.zeros_like(y, dtype=np.str_)
y_new[y == 0] = "N"
y_new[y == 1] = "Y"
clf = SVC().fit(X, y_new)
# clf.classes_
# ['N' 'Y']
coreml_model = coremltools.converters.sklearn.convert(clf)
coreml_model.save("demo_output.mlmodel")

最新更新