主要内容

组合多输出网络进行预测

这个例子展示了如何组装多个输出网络进行预测。

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

负荷模型功能及参数

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

s =负载(“dlnetDigits.mat”);dlnet = s.dlnet;一会= s.classNames;

组合预测网络

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

lgraph = layerGraph (dlnet);

层图不包括输出层。方法在层图中添加分类层和回归层addLayersconnectLayers功能。

层= classificationLayer (“类”一会,“名字”“coutput”);lgraph = addLayers (lgraph层);lgraph = connectLayers (lgraph,“softmax”“coutput”);层= regressionLayer (“名字”“routput”);lgraph = addLayers (lgraph层);lgraph = connectLayers (lgraph,“取得”“routput”);

查看网络图。

图绘制(lgraph)

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

组装网络使用assembleNetwork函数。

净= assembleNetwork (lgraph)
net = DAGNetwork with properties: Layers: [19x1 net.cnn.layer. layer] Connections: [19x2 table] InputNames: {'in'} OutputNames: {'coutput' ' 'routput'}

根据新数据进行预测

加载测试数据。

[XTest, Y1Test Y2Test] = digitTest4DArrayData;

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

[Y1Pred, Y2Pred] =预测(XTest净,“ReturnCategorical”,真正的);

评估分类精度。

精度=意味着(Y1Pred = = Y1Test)
精度= 0.9870

评估回归的准确性。

=√(平均值((Y2Pred - Y2Test).^2))
angleRMSE =6.0091

看看一些图片和他们的预测。红色显示预测的角度,绿色显示正确的标签。

idx = randperm(大小(XTest, 4), 9);数字i = 1:9 subplot(3,3,i) i = XTest(:,:,:,idx(i));imshow (I)深圳=大小(我,1);抵消= sz / 2;thetaPred = Y2Pred (idx (i));情节(抵消* [1-tand (thetaPred) 1 +罐内(thetaPred)], [sz 0],“r——”) thetaValidation = Y2Test(idx(i));情节(抵消* [1-tand (thetaValidation) 1 +罐内(thetaValidation)], [sz 0],“g——”)举行标签=字符串(Y1Pred (idx (i)));标题(”的标签:“+标签)结束

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

另请参阅

||||||

相关的话题