MLMultiArray是模型输出矩阵的扁平数组吗?

时间:2020-08-27 10:35:56

标签: arrays swift machine-learning coreml

CoreML的新手,试图理解一些基本概念。

我正在处理一个模型,其输出为:

float32 [1,896,16]

使用模型并将输出作为MLMultiArray时,我得到以下信息:

let output = prediction.regressors // MLMultiArray
print(output.debugDescription) // Float32 1 x 896 x 16 array
print(output.count) // 14336, which is 896x16

我可以使用output[0]..output[1]..

来访问每个元素

对于将存储在MLMultiArray中的任何数据类型是否正确? Swift为我们提供服务是“方便”吗?

如果是扁平数组,是否按矩阵的相同顺序排序?

1 个答案:

答案 0 :(得分:1)

MLMultiArray是模型输出矩阵的扁平数组吗? No it's not it's a multidimensional array of the given dimensions

您可以将其转换为如下所示的数组,并且应该与矩阵的顺序相同。

let length = output.count
    let doublePtr =  output.dataPointer.bindMemory(to: Double.self, capacity: length)
    let doubleBuffer = UnsafeBufferPointer(start: doublePtr, count: length)
    let outputArray = Array(doubleBuffer)

对于数据类型,Apple文档仅显示3种类型:Here

case int32

表示多维数组的整数类型,并且为 通常用于文本编码。

case float32

代表多维数组中的float类型。

双写

代表多维数组的double类型。