我尝试将sklearn规范器转换为coreml模型,如下所示:
normalized = sklearn.preprocessing.Normalizer()
coreml_model = coremltools.converters.sklearn.convert(normalized)但我知道这个错误:
错误处理特征列表:如果给定一个特征名,则必须提供num_dimensions
我如何设置"num_dimensions"?
另一个选项是直接使用CoreML中的规范化器:
https://apple.github.io/coremltools/coremlspecification/sections/FeatureEngineering.html#normalizer
但是没有文档说明我如何在IOS中使用这个功能。例如,如何在浮点数数组上运行此操作?
发布于 2019-02-10 12:38:23
要在Core中创建规范化器,您需要构建一个管道模型。管道只是一系列Core模型,打包成一个新的Core模型。
管道中的第一个模型是Normalizer模型。第二种是你的常规模式。然后,来自规范化器模型的输出将成为常规模型的输入。
您可以手工完成此操作(请参阅我的书,我的配置文件中的链接),但实际上,让scikit-学习转换器来处理这个问题是最简单的,因为这就是它的目的。
发生num_dimensions错误的原因是,仅仅转换一个sklearn Normalizer并不能为coremltools转换器提供足够的信息。如果您想在scikit中进行规范化学习,那么看起来您还需要在scikit中创建一个管道模型--学习并转换它。
发布于 2019-04-04 21:48:10
您可以指定如下所示的输入维度:
coreml_model = coremltools.converters.sklearn.convert(normalized, input_features={'input': [0, 1, 2]})这里的input是输入特性名(默认情况下是input ),而list ([0, 1, 2])是输入特性did(为了简单起见,您可以只执行range(num_features),或者像我一样显式地列出索引值)。
https://stackoverflow.com/questions/54606920
复制相似问题