python - 如何将数组转换为模型输入?

标签 python swift keras coreml coremltools

我使用 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 中工作。

如果需要的话,这是架构的图像:

enter image description here

最后,我如何格式化自己的数据以使其与 core ml 一起使用

最佳答案

您需要将输入数据放入 15 个(!)不同的 MLMultiArray 对象中。

第一个 MLMultiArray(名为 lists)是适合您的序列的。它只需要一个元素。

其他 14 个输入是 LSTM 隐藏状态变量。您需要显式传递这些。

要处理数字序列,您必须为序列中的每个元素运行一次 Core ML 模型,每次传递当前的隐藏状态,并从模型的输出中读取新的隐藏状态。

这比 Keras 中的工作量要多得多。 ;-)

关于python - 如何将数组转换为模型输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58913821/

相关文章:

python - 如何使 python 打印 1 而不是 1.0

swift - 如何允许粘贴(cmd+v)到 NSTableView 单元格中?

python - Keras/Tensorflow 计算批处理的mean_iou

machine-learning - 将 Tensorflow 代码转换为 Keras

python - 如何使用非大写 p 的 TensorFlow tf.print?

python - 烦人的生成器错误

Python:通用的 getter 和 setter

python - 通过 UWSGI/NGINX 将参数传递给 Python Flask

arrays - Matlab 向量查找的 Swift 版本?

ios - 滚动时 Swift UICollectionViewCell 动画 View 随机空白