我使用 python 中的 coremltools 将用于序列预测的 keras 神经网络模型转换为 mlmodel。
模型需要像 [ 1 这样的输入,[2],[3],[4]] 并给出输出 [5]。 在 python 中我会写:
model.predict([1,[2],[3],[4]])
[5]
当我尝试在 swift 中做同样的事情时:
let models = model()
var array: [[Int]] = [1,[2],[3],[4]]
print(models.prediction(input: array))
它给了我这个错误:
无法将“[[Int]]”类型的值转换为预期的参数类型“modelInput”
我在 home 上找不到任何东西来格式化像我这样的数据以使其在 core ml 中工作。
如果需要的话,这是架构的图像:
最后,我如何格式化自己的数据以使其与 core ml 一起使用
最佳答案
您需要将输入数据放入 15 个(!)不同的 MLMultiArray
对象中。
第一个 MLMultiArray(名为 lists
)是适合您的序列的。它只需要一个元素。
其他 14 个输入是 LSTM 隐藏状态变量。您需要显式传递这些。
要处理数字序列,您必须为序列中的每个元素运行一次 Core ML 模型,每次传递当前的隐藏状态,并从模型的输出中读取新的隐藏状态。
这比 Keras 中的工作量要多得多。 ;-)
关于python - 如何将数组转换为模型输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58913821/