我尝试将sklearn规范化器转换为coreml模型,如下所示:

normalized = sklearn.preprocessing.Normalizer()

coreml_model = coremltools.converters.sklearn.convert(normalized)


但是我得到这个错误:

“错误处理功能部件列表:如果给出单个功能部件名称,则必须提供num_dimensions”

如何设置“ num_dimensions”?

另一个选择是直接在CoreML中使用Normalizer:

https://apple.github.io/coremltools/coremlspecification/sections/FeatureEngineering.html#normalizer

但是零文档说明了如何在IOS中利用此功能。例如,如何在浮点数组上运行它?

最佳答案

要在Core ML中创建规范化器,您需要构建管道模型。管道只是一系列Core ML模型,捆绑为新的Core ML模型。

管道中的第一个模型将是Normalizer模型。第二个是您的常规模型。然后,来自规范化模型的输出将成为常规模型的输入。

您可以手动执行此操作(请参阅我的书,在我的个人资料中的链接),但实际上,让scikit-learn转换器处理此问题最简单,因为这就是它的用途。

出现num_dimensions错误的原因是,仅转换sklearn Normalizer不会为coremltools转换器提供足够的信息来使用。如果要在scikit-learn中进行标准化,则看起来还需要在scikit-learn中创建管道模型并将其转换。

09-15 20:34