首页 文章

为什么我启用了Metal API,但我的Coreml自定义层仍在CPU上运行

提问于
浏览
1

我是Coreml和Metal的新手 .

现在我正在研究Core Ml模型的项目测试性能 . 我实现了一个基于张量流的CNN模型,并使用tf-coreml工具将此模型转换为.mlmodel .

但在我的CNN模型中,它有一个名为'equal'的操作,Coreml不支持 . 它转换为.mlmodel的自定义层my .mlmodel file screen shot

然后我跟着Hollemans惊人的博客http://machinethink.net/blog/coreml-custom-layers/在CPU和GPU上实现这个自定义层 . 我的Cpu版本运行良好,但是当我在GPU上实现此操作时,它无法激活"encode function" . 我按照Hollemans博客中的所有步骤创建了Metal计算内核和其他内容 . 但是当我运行我的项目时,它总是在CPU上运行 . 它似乎永远不会进入Encode功能 . only run on evaluate function

我在谷歌搜索了很多,但没有找到一个理想的答案,这真让我感到沮丧 . 如果有人有任何提示,我将非常感激 . 提前致谢 .

1 回答

  • 1

    当你ask your model for prediction时,你可以指定像running on CPU only这样的选项 . 您的模型未在GPU上运行的一个可能原因可能是您有类似的东西

    let options = MLPredictionOptions() options.usesCPUOnly = true

    在您的代码中,您将 options 传递给预测方法 . 将 usesCPUOnly 属性设置为false以允许模型在GPU上运行 . 因为你可以选择在CPU或GPU上运行模型,所以这可能是你的模型在CPU上运行的原因之一 . [2]真的很棒 .

相关问题