Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 向MLMultiArray添加元素_Swift_Coreml - Fatal编程技术网

Swift 向MLMultiArray添加元素

Swift 向MLMultiArray添加元素,swift,coreml,Swift,Coreml,我有一个CoreML模型(使用TF创建并转换为CoreML)。为了它 我将得到这些[a,b,c]元组,需要收集其中的40个元组,然后发送到模型中进行预测。我正在浏览MLMultiArray文档,我被卡住了。可能是因为我不熟悉斯威夫特 我有一个名为modelInput的变量,我想初始化它,然后当元组进入时,将它们添加到modelInput变量中 modelInput = MLMultiArray(shape:[1,40,3], dataType:MLMultiArrayDataType.doubl

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

我将得到这些[a,b,c]元组,需要收集其中的40个元组,然后发送到模型中进行预测。我正在浏览MLMultiArray文档,我被卡住了。可能是因为我不熟悉斯威夫特

我有一个名为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
如何更新多重数组

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


我还想打印MLMultiArray的内容。不过,似乎没有任何帮助函数可以做到这一点。

我找到了答案。我必须这样--

我无法使用原始指针访问元素。

您可以使用指针,但必须将原始指针更改为键入的指针。例如:

let ptr = UnsafeMutablePointer<Float>(OpaquePointer(multiArray.dataPointer))
ptr[0] = a
ptr[1] = b
ptr[2] = c
let ptr=UnsafeMutablePointer(OpaquePointer(multiArray.dataPointer))
ptr[0]=a
ptr[1]=b
ptr[2]=c

Hi Matthijs。我有一个FP 32值数组,我已使用JSON文件将其加载到我的应用程序中。数组的形状是[1,12,128,192]。然后我创建了一个MLMultiArray,如下所示:let data=try?MLMultiArray(形状:[1,12,128,192],数据类型:.int32)那么,现在如何将数据获取到此MLMultiArray中?你能提供一个代码示例或给我指出正确的方向吗?顺便说一句,我喜欢你的CoreML书籍。感谢数据在数组中的顺序已经正确,只是数据类型不同。因此,您只需对数组中的元素执行
循环,将它们转换为
Int32
,然后将其放入
MLMultiArray
。嗨,Matthijs,感谢您的提示。我试过这个代码:让yHat=try?0中i的MLMultiArray(形状:[1,12,128,192],数据类型:.float32)。。
    modelInput[currCount+0] = NSNumber(floatLiteral: a)
    modelInput[currCount+1] = NSNumber(floatLiteral: b)
    modelInput[currCount+2] = NSNumber(floatLiteral: c)
let ptr = UnsafeMutablePointer<Float>(OpaquePointer(multiArray.dataPointer))
ptr[0] = a
ptr[1] = b
ptr[2] = c