如何解决如何初始化多维 MLMultiArray
我正在托管一个 CoreML 模型,该模型将 MLMultiArray
的等级为 4 作为其输入:
我的输入数据如下:
let inputArray: [[[Float]]]
但我不知道如何从中初始化 MLMultiArray。以下是一些尝试:
MLMultiArray(inputArray) // error: No exact matches in call to initializer
let multiArray = try! MLMultiArray(shape: [0,128,1],dataType: .float32)
multiArray[0,1] = inputArray[0] // Cannot assign value of type '[[Float]]' to subscript of type 'NSNumber'
memset(multiArray.dataPointer,128*128) // EXC_BAD_ACCESS (code=1,address=0x0)
你如何初始化这样的 MLMultiArray?
解决方法
初始化为
let input = try! MLMultiArray(shape: [1,128,1],dataType: .float64)
是正确的(请注意,我在 coremltools 中编辑了输入形状)。
填充应该如下:
for batchIndex in 0..<inputArray.count {
for heightIndex in 0..<inputArray[0].count {
for widthIndex in 0..<inputArray[0][0].count {
input[[batchIndex,heightIndex,widthIndex,0] as [NSNumber]] = (inputArray[batchIndex][heightIndex][widthIndex]) as NSNumber
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。