首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CoreML如何规范输入数组

CoreML如何规范输入数组
EN

Stack Overflow用户
提问于 2019-02-09 13:59:15
回答 2查看 534关注 0票数 0

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

代码语言:javascript
复制
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中使用这个功能。例如,如何在浮点数数组上运行此操作?

EN

回答 2

Stack Overflow用户

发布于 2019-02-10 12:38:23

要在Core中创建规范化器,您需要构建一个管道模型。管道只是一系列Core模型,打包成一个新的Core模型。

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

您可以手工完成此操作(请参阅我的书,我的配置文件中的链接),但实际上,让scikit-学习转换器来处理这个问题是最简单的,因为这就是它的目的。

发生num_dimensions错误的原因是,仅仅转换一个sklearn Normalizer并不能为coremltools转换器提供足够的信息。如果您想在scikit中进行规范化学习,那么看起来您还需要在scikit中创建一个管道模型--学习并转换它。

票数 1
EN

Stack Overflow用户

发布于 2019-04-04 21:48:10

您可以指定如下所示的输入维度:

代码语言:javascript
复制
coreml_model = coremltools.converters.sklearn.convert(normalized, input_features={'input': [0, 1, 2]})

这里的input是输入特性名(默认情况下是input ),而list ([0, 1, 2])是输入特性did(为了简单起见,您可以只执行range(num_features),或者像我一样显式地列出索引值)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54606920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档