向MLMultiArray添加元素

时间:2020-01-02 02:34:18

标签: swift coreml

我有一个CoreML模型(使用TF创建并转换为CoreML)。为此

input is: MultiArray (Double 1 x 40 x 3)
output is: MultiArray (Double)

我将得到这些[a,b,c]元组,并需要收集40个元组,然后再发送到模型中进行预测。我正在查看MLMultiArray文档,并被卡住了。可能是因为我是Swift的新手。

我要初始化一个名为modelInput的变量,然后在元组进入时将其添加到modelInput变量中。

modelInput = MLMultiArray(shape:[1,40,3], dataType:MLMultiArrayDataType.double))

此调用后,modelInput.count为120。所以我猜创建一个空数组。

但是,现在我想在它们加入时添加元组。我不确定如何执行此操作。 为此,我有一个currCount变量,该变量在每次调用后都会更新。但是下面的代码给我一个错误。

"Value of type 'UnsafeMutableRawPointer' has no subscripts"

    var currPtr : UnsafeMutableRawPointer = modelInput.dataPointer + currCount
    currPtr[0] = a
    currPtr[1] = b
    currPtr[2] = c
    currCount = currCount + 3

如何更新multiArray?

我的方法是否正确?这是为预测输入创建多数组的正确方法吗?

我还想打印MLMultiArray的内容。似乎没有任何辅助功能可以做到这一点。

1 个答案:

答案 0 :(得分:0)

我知道了。我必须-

    modelInput[currCount+0] = NSNumber(floatLiteral: a)
    modelInput[currCount+1] = NSNumber(floatLiteral: b)
    modelInput[currCount+2] = NSNumber(floatLiteral: c)

我不能使用原始指针访问元素。