首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Swift中优化MLMultiArray上的嵌套for循环

问在Swift中优化MLMultiArray上的嵌套for循环
EN

Stack Overflow用户
提问于 2021-05-23 16:05:07
回答 1查看 156关注 0票数 0

我有一个嵌套的for循环(来自here)

heatmaps是形状为(14,50,60)的MLMultiArray。这段代码迭代了shape (50,60)的14个子数组,并找到每个值的最大值。

代码如下:

代码语言:javascript
复制
for k in 0..<keypoint_number {
        for i in 0..<heatmap_w {
            for j in 0..<heatmap_h {
                let index = k*(heatmap_w*heatmap_h) + i*(heatmap_h) + j
                let confidence = heatmaps[index].doubleValue
                guard confidence > 0 else { continue }
                if n_kpoints[k] == nil ||
                    (n_kpoints[k] != nil && n_kpoints[k]!.maxConfidence < confidence) {
                    n_kpoints[k] = PredictedPoint(maxPoint: CGPoint(x: CGFloat(j), y: CGFloat(i)), maxConfidence: confidence)
                }
            }
        }
    }

等效的python代码:

代码语言:javascript
复制
for p_ind in range(n_keypoints):
    heat = heatmaps[0, p_ind, :, :]
    ind = np.unravel_index(np.argmax(heat), heat.shape)

使用iPhone 12 mini时,Swift功能大约需要36ms,而使用iPhone 11Pro Max时,大约需要58ms。我想优化它,减少它的运行时间。

我该怎么做呢?

如果我用Objective-C编写代码会有帮助吗?怎么做呢?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2021-05-23 18:27:38

加速框架有一个优化的argmax函数。你也可以在GitHub上的CoreMLHelpers中找到它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67657533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档