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为我们提供服务是“方便”吗?
如果是扁平数组,是否按矩阵的相同顺序排序?
答案 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类型。