我真的是Coreml和Metal的新手。
现在,我正在研究Core Ml模型的项目测试性能。我基于tensorflow实现了CNN模型,并使用tf-coreml工具将此模型转换为.mlmodel。
但是在我的CNN模型中,它有一个名为“等于”的操作,Coreml不支持。它转换为.mlmodel my .mlmodel file screen shot
的自定义层然后,我跟随Hollemans出色的博客http://machinethink.net/blog/coreml-custom-layers/在CPU和GPU上都实现了此自定义层。我的Cpu版本运行良好,但是当我在GPU上实现此操作时,无法激活“编码功能”。我按照Hollemans博客中的所有步骤创建了Metal计算内核,其余的都创建了。但是,当我运行项目时,它总是在CPU上运行。它似乎从未进入过编码功能。only run on evaluate function
我在Google上搜索了很多内容,但是找不到理想的答案,这确实让我感到沮丧。如果有人有任何提示,我将不胜感激。预先感谢。
答案 0 :(得分:1)
ask your model for prediction时,您可以指定诸如running on CPU only之类的选项。您的模型未在GPU上运行的可能原因之一可能是您拥有类似
let options = MLPredictionOptions()
options.usesCPUOnly = true
,然后将options
传递给预测方法。将usesCPUOnly
属性设置为false可以使模型在GPU上运行。正如Hollemans的博客(确实很棒)中没有提到的那样,您可以选择在CPU或GPU上运行模型,我想这可能是您的模型继续在CPU上运行的原因之一。