调整coremlmodel的输入

时间:2018-08-23 09:52:48

标签: ios coreml onnx-coreml

我有一个coremlmodel,其输入形状为MultiArray (Float32 67 x 256 x 320) 我很难调整此模型的输入。 目前,我正在努力实现这一目标,

var m = try! MLMultiArray(shape: [67,256,320], dataType: .double)
for i in 0...66{           
    var cost = rand((256,320)) // this is coming from swix [SWIX]
    memcpy(m.dataPointer+i*256*320, &cur_cost.flat.grid , 256*320)
}

稍后,我将不得不用该尺寸的矩阵替换兰特。我首先将其用于测试目的。

任何有关如何调整输入以适应体积的指标都将不胜感激。

[SWIX]

1 个答案:

答案 0 :(得分:0)

您的代码中似乎有问题的是,您正在复制字节而不是双精度。双精度数是8个字节,因此偏移量应为i*256*320*MemoryLayout<Double>.stride,复制量应为256*320*MemoryLayout<Double>.stride

请注意,您还可以使用MLMultiArray的strides属性来计算数组中给定数据元素的偏移量:

let offset = i0 * strides[0].intValue + i1 * strides[1].intValue + i2 * strides[2].intValue