如何解决MLMultiArray是模型输出矩阵的扁平数组吗?
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为我们提供服务是“方便”吗?
如果是扁平数组,是否按矩阵的相同顺序排序?
解决方法
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类型。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。