组合多输出网络进行预测
这个例子展示了如何组装一个用于预测的多输出网络。
而不是使用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)
组件组装网络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)));标题(”的标签:“+标签)结束
另请参阅
convolution2dLayer
|batchNormalizationLayer
|reluLayer
|fullyConnectedLayer
|softmaxLayer
|assembleNetwork
|预测