如何解决 CoreML - 验证输入失败 - 形状不在允许形状的枚举集中
How to solve CoreML - Failure verifying Inputs - Shape was not in enumerated set of allowed shape
尝试将机器学习集成到语音聊天应用程序中。
现在,用户可以说,做两件事 - 根据语音输入接受或拒绝(使用 Apple Speech to Text API 转换为文本)
要接受,输入可以是 Accept、Okay、Confirm 等,拒绝,输入可以是 Reject、No、Nope、I disagree 等
我有一个用 Keras 构建的模型,并从我已集成到我的应用程序中的 Tensorflow 模型格式转换为 mlmodel。
该模型接受 MultiArray 输入并提供 Array 输出。
JSON 文件用于训练,其中包含用于意图的参数(例如 - 'Accept' 意图将具有 'accept'、'okay'、'confirm' 作为参数)。
考虑到所有参数中唯一的小写单词,创建了一个词袋,这个大小用于从传递给预测方法的输入字符串创建 MLMultiArray,如
让预测=尝试! model.prediction(输入 1:mlMultiArray)
这给出了[(零到一),(零到一)]的输出,其中索引 0 处的元素表示接受意图,索引 1 处的元素表示拒绝意图的可能性。
如果 json 文件的参数数量较少,这可以正常工作。例如,当词袋(所有参数中没有唯一词)有 17 个元素时,程序 运行 没问题。
但是,当我添加更多参数并且词袋现在有 36 个元素时,出现错误
致命错误:'try!' 表达式意外引发错误:错误域=com.apple.CoreML 代码=0 "Shape (36) was not in enumerated set of allowed shapes" 用户信息={NSLocalizedDescription=Shape (36) 不在允许形状的枚举集中}:
使用https://developer.apple.com/documentation/coreml/mlmultiarray/2879232-init这个方法初始化ML MultiArray
核心 ML 模型期望输入始终具有固定大小,比如长度为 17 的向量。
您也可以使用 "size flexibility",它告诉模型它应该期望输入在一定范围内,例如长度在 10 到 40 个元素之间的向量。
听起来您需要配置模型以实现尺寸灵活性。为此,您可以使用 coremltools
中的 flexible_shape_utils
。
尝试将机器学习集成到语音聊天应用程序中。 现在,用户可以说,做两件事 - 根据语音输入接受或拒绝(使用 Apple Speech to Text API 转换为文本) 要接受,输入可以是 Accept、Okay、Confirm 等,拒绝,输入可以是 Reject、No、Nope、I disagree 等
我有一个用 Keras 构建的模型,并从我已集成到我的应用程序中的 Tensorflow 模型格式转换为 mlmodel。
该模型接受 MultiArray 输入并提供 Array 输出。
JSON 文件用于训练,其中包含用于意图的参数(例如 - 'Accept' 意图将具有 'accept'、'okay'、'confirm' 作为参数)。 考虑到所有参数中唯一的小写单词,创建了一个词袋,这个大小用于从传递给预测方法的输入字符串创建 MLMultiArray,如
让预测=尝试! model.prediction(输入 1:mlMultiArray)
这给出了[(零到一),(零到一)]的输出,其中索引 0 处的元素表示接受意图,索引 1 处的元素表示拒绝意图的可能性。
如果 json 文件的参数数量较少,这可以正常工作。例如,当词袋(所有参数中没有唯一词)有 17 个元素时,程序 运行 没问题。 但是,当我添加更多参数并且词袋现在有 36 个元素时,出现错误 致命错误:'try!' 表达式意外引发错误:错误域=com.apple.CoreML 代码=0 "Shape (36) was not in enumerated set of allowed shapes" 用户信息={NSLocalizedDescription=Shape (36) 不在允许形状的枚举集中}:
使用https://developer.apple.com/documentation/coreml/mlmultiarray/2879232-init这个方法初始化ML MultiArray
核心 ML 模型期望输入始终具有固定大小,比如长度为 17 的向量。
您也可以使用 "size flexibility",它告诉模型它应该期望输入在一定范围内,例如长度在 10 到 40 个元素之间的向量。
听起来您需要配置模型以实现尺寸灵活性。为此,您可以使用 coremltools
中的 flexible_shape_utils
。