kNN分类器的CoreML输出



我正在使用一个我已经构建的kNN模型,我想导出为.mlmodel文件。我已经这样做了,但就效率而言,这可能需要一些工作。

我有python3.6、sklearn0.19.2和最新版本的mlcoretools。

最初,我用x_trainx_test作为float64的数组,用y_trainy_test作为int8的数组来训练我的模型。y值为0或1。使用:

import coremltools
coreml_model = coremltools.converters.sklearn.convert(model)

我得到这个错误:

ValueError: Class labels must be all of type int or all of type string.

很好。我把y值改为int32,它就起作用了。但我想要int8的原因是我应用程序中的内存原因。为什么int8不起作用?

另一个问题是输出。目前,我的标签是0或1。但是,有没有办法让模型输出字符串gostop,而不是1或0?似乎在文档中,在输入中我可以有dict,但不能用于输出。理想情况下,这样的东西对输出来说会很好,但我无法让它工作:labels = {“stop” : 0, “go” : 1}

CoreML当前不支持将int8作为输入数据类型。

如果希望模型预测字符串,则应该使用字符串标签。也就是说,可以更改模型,使其输出字符串而不是数字。

您将不得不编辑mlmodel文件;spec";对象,并填充spec.kNearestNeighborsClassifierstringClassLabels字段。

最新更新