ios - 如何在 MLMultiarray 元素上应用 Sigmoid?

标签 ios swift computer-vision coreml

对于Python中的 torch 张量,我可以使用
y = x[i].sigmoid()

如何在 Swift 中使用 MLMultiArray 复制此内容?
我可以通过 VNCoreMLFeatureValueObservation.featureValue.multiArrayValue 获取数组
现在我想对此应用 sigmoid

我使用的 sigmoid 函数是:

func sigmoid(z: Double) -> Double {
        return 1.0 / (1.0 + exp(-z))
    }

最佳答案

从内存中输入此内容,因此可能会出现错误,但基本上您会获取指向内存的指针,然后循环遍历它:

let ptr = multiArray.dataPointer.assumingMemoryBound(to: Double.self)
for i in 0..<multiArray.count {
  ptr[i] = sigmoid(ptr[i])
}

但是,将 sigmoid 操作添加到 Core ML 模型本身并让 Core ML 操心要简单得多。您可以通过在转换之前或之后向原始模型添加 sigmoid 操作来完成此操作(有关如何执行此操作的说明,请参阅我的书《Core ML Survival Guide》)。

关于ios - 如何在 MLMultiarray 元素上应用 Sigmoid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64333508/

相关文章:

ios - 执行展开转场后新数据未更新

Swift 在 vi​​ewdidappear 中显示图像不能通过选择新图像来替换

c++ - 图像 C++ 上有太多黑色区域的 OpenCV 校正

iphone - 管理当前位置的缺失

ios - 是否可以自定义区域形状?核心位置

ios - NSInternalInconsistencyException : There can only be one UIApplication instance

ios - 如何从Facebook获取个人资料图片

ios - '? :' 表达式中的结果值具有不匹配的类型 '()' 和 'String?'

python-2.7 - cv2.min的功能

algorithm - 运动结构,在给定 2D 图像点对应的情况下重建 3D 点云