这个例子展示了如何组装多个输出网络进行预测。
而不是使用dlnetwork
对象进行预测时,可以将网络组装成一个DAGNetwork
准备好使用assembleNetwork
函数。这让你使用预测
函数的其他数据类型,如数据存储。
从MAT文件加载模型参数dlnetDigits.mat
.MAT文件包含一个dlnetwork
对象,该对象预测分类标签的分数和数字图像的数字旋转角度,以及相应的类名。
s =负载(“dlnetDigits.mat”);dlnet = s.dlnet;一会= s.classNames;
的提取层图dlnetwork
对象使用layerGraph
函数。
lgraph = layerGraph (dlnet);
层图不包括输出层。方法在层图中添加分类层和回归层addLayers
和connectLayers
功能。
层= classificationLayer (“类”一会,“名字”,“coutput”);lgraph = addLayers (lgraph层);lgraph = connectLayers (lgraph,“softmax”,“coutput”);层= regressionLayer (“名字”,“routput”);lgraph = addLayers (lgraph层);lgraph = connectLayers (lgraph,“取得”,“routput”);
查看网络图。
图绘制(lgraph)
组装网络使用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)));标题(”的标签:“+标签)结束
assembleNetwork
|batchNormalizationLayer
|convolution2dLayer
|fullyConnectedLayer
|预测
|reluLayer
|softmaxLayer