主要内容

组合多输出网络进行预测

这个例子展示了如何组装一个用于预测的多输出网络。

而不是使用dlnetwork对象进行预测,可以将网络组装成一个DAGNetwork准备使用assembleNetwork函数。这允许您使用预测函数用于其他数据类型,如数据存储。

负载模型、函数和参数

从MAT文件加载模型参数dlnetDigits.mat.MAT文件包含一个dlnetwork对象,该对象预测数字图像的分类标签和数字旋转角度的分数,以及相应的类名。

S =负载(“dlnetDigits.mat”);Net = s.net;classNames = s.classNames;

组合网络预测

中提取层图dlnetwork对象使用layerGraph函数。

lgraph = layerGraph(net);

层图不包括输出层。方法向层图添加分类层和回归层addLayers而且connectLayers功能。

layers = classificationLayer(Classes=classNames,Name=“coutput”);lgraph = addLayers(lgraph,layers);lgraph = connectLayers(“softmax”,“coutput”);layers = regressionLayer(名称=“routput”);lgraph = addLayers(lgraph,layers);lgraph = connectLayers(“取得”,“routput”);

查看网络示意图。

图绘制(lgraph)

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

组件组装网络assembleNetwork函数。

net =汇编网络(lgraph)
net = DAGNetwork with properties: Layers: [19x1 nnet.cnn.layer.Layer] Connections: [19x2 table] InputNames: {'in'} OutputNames: {'coutput' 'routput'}

对新数据进行预测

加载测试数据。

[XTest,T1Test,T2Test] = digitTest4DArrayData;

要使用组合网络进行预测,请使用预测函数。若要返回分类输出的类别标签,请设置ReturnCategorical选项真正的

[Y1Test,Y2Test] = predict(net,XTest,ReturnCategorical=true);

评估分类准确率。

精确度=平均值(Y1Test==T1Test)
准确度= 0.9870

评估回归精度。

angleRMSE =√(mean((Y2Test - T2Test).^2))
angleRMSE =6.0091

查看一些带有预测的图片。红色显示预测角度,绿色显示正确标签。

idx = randperm(size(XTest,4),9);数字i = 1:9 subplot(3,3,i) i = XTest(:,:,:,idx(i));imshow (I)sz = size(I,1);Offset = sz/2;thetaPred = Y2Test(idx(i));plot(offset*[1-tand(thetaPred) 1+tand(thetaPred)],[sz 0],“r——”) thetaValidation = T2Test(idx(i));plot(offset*[1-tand(thetaValidation) 1+tand(thetaValidation)],[sz 0],,“g——”)举行label = string(Y1Test(idx(i)));标题(”的标签:“+标签)结束

图中包含9个轴对象。轴对象1的标题标签:8包含3个对象类型的图像,线。轴对象2的标题标签:9包含3个对象类型的图像,线。轴对象3带有标题标签:1包含3个类型为image, line的对象。轴对象4的标题标签:9包含3个对象类型的图像,线。轴对象5带有标题标签:6包含3个类型为image, line的对象。轴对象6的标题标签:0包含3个类型为image, line的对象。轴对象7与标题标签:2包含3个对象类型的图像,线。轴对象8的标题标签:5包含3个对象类型的图像,线。轴对象9带有标题标签:9包含3个类型为image, line的对象。

另请参阅

||||||

相关的话题