我是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 回答
当你ask your model for prediction时,你可以指定像running on CPU only这样的选项 . 您的模型未在GPU上运行的一个可能原因可能是您有类似的东西
let options = MLPredictionOptions() options.usesCPUOnly = true
在您的代码中,您将
options
传递给预测方法 . 将usesCPUOnly
属性设置为false以允许模型在GPU上运行 . 因为你可以选择在CPU或GPU上运行模型,所以这可能是你的模型在CPU上运行的原因之一 . [2]真的很棒 .