Core ML MLOneHotEncoder 更新后错误:“未知类别字符串”

问题描述 投票:0回答:1

Stack Overflow 社区,

我最近将 Xcode 和 Core ML 从版本 13.0.1 更新到 14.1.2,并且在 Core ML 分类器中面临 MLOneHotEncoder 的问题。在先前版本中运行良好的相同代码和数据现在在预测期间会抛出错误。错误信息是:

MLOneHotEncoder: unknown category String [TERM] expected one of

这似乎表明 MLOneHotEncoder 没有像以前的版本那样处理未知字符串。以下是我的情况的简要概述:

  • 核心 ML 模型:该模型是一个使用 MLOneHotEncoder 处理分类数据的分类器。
  • 数据:使用相同的数据集进行训练和预测,更新前运行良好。
  • 错误上下文:错误发生在预测阶段,而不是训练期间。

我已检查数据一致性并确认数据集与之前版本使用的数据集相同。

这是我的问题:

  1. Core ML 版本 14.1.2 中 MLOneHotEncoder 处理未知类别的方式是否有变化?
  2. 在更新的 Core ML 版本中,是否有任何使用 MLOneHotEncoder 处理未知字符串类别的推荐做法?
  3. 是否需要修改模型训练代码或数据预处理步骤以适应新 Core ML 版本中的变化?

如果您能提供有关如何解决此问题的任何见解或建议,我将不胜感激。如果需要更多信息,我很乐意提供。

感谢您的协助!

swift one-hot-encoding coreml
1个回答
0
投票

我在苹果开发者论坛上收到了回复:

具有经过训练的单热编码器的模型的预期行为 CreateML 对未知类别的操作是抛出错误。这里有一个 CoreML 中 OneHotEncoder 的参考指南。在 CoreML 中,您可以 将枚举 HandleUnknown 设置为 ErrorOnUnknown (预期 行为)或忽略未知。这两种方法都有争议,并且 这很大程度上取决于您拥有的数据和您正在尝试的模型 培训。先前操作系统上的 CreateML 版本忽略了未知 值,因此使用相同的数据在较新的操作系统上训练新模型 可能会产生您所看到的结果。

© www.soinside.com 2019 - 2024. All rights reserved.