本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

加载预训练网络以用于代码生成

您可以为经过预训练的卷积神经网络 (CNN) 生成代码。要向代码生成器提供网络,请从经过训练的网络中加载一个 SeriesNetworkDAGNetwork 对象。

使用 coder.loadDeepLearningNetwork 加载网络

您可以使用 coder.loadDeepLearningNetwork 从任何支持代码生成的网络加载网络对象。您可以从 MAT 文件中指定网络。MAT 文件必须只包含要加载的网络。

例如,假设您使用 trainNetwork 函数创建了一个名为 myNet 的经过训练的网络对象。然后,您可以通过输入 save 来保存工作区。这将创建一个名为 matlab.mat 的文件,其中包含网络对象。要加载网络对象 myNet,请输入:

net = coder.loadDeepLearningNetwork('matlab.mat');

您还可以通过提供函数名称的方式来指定网络,指定的函数须能返回经过预训练的 SeriesNetworkDAGNetwork 对象,例如:

例如,通过输入以下命令加载网络对象:

net = coder.loadDeepLearningNetwork('googlenet');

上述 Deep Learning Toolbox™ 函数要求您安装适用于各函数的支持包。请参阅Pretrained Deep Neural Networks (Deep Learning Toolbox)。

为代码生成指定网络对象

如果您使用 codegen 或 App 生成代码,请使用 coder.loadDeepLearningNetwork 将网络对象加载到您的入口函数内。例如:

function out = googlenet_predict(in) %#codegen

persistent mynet;

if isempty(mynet)
    mynet = coder.loadDeepLearningNetwork('googlenet');
end
out = predict(mynet,in);

对于某些支持包函数,如 alexnetinceptionv3googlenetresnet,您可以直接指定支持包函数,例如,通过编写 mynet = googlenet

接下来,为入口函数生成代码。例如:

cfg = coder.config('mex');
cfg.TargetLang = 'C++';
cfg.DeepLearningConfig = coder.DeepLearningConfig('mkldnn'); 
codegen -args {ones(224,224,3,'single')} -config cfg googlenet_predict

如果您使用 cnncodegen 生成代码,请在 MATLAB® 工作区中加载网络对象。然后,将该对象传递给 cnncodegen。例如:

net = squeezenet;
cnncodegen(net,'targetlib','arm-compute');

另请参阅

| | | | |

相关主题