В этом примере показано, как собрать кратное выходная сеть для предсказания.
Вместо того, чтобы использовать dlnetwork
объект для предсказания, можно собрать сеть в DAGNetwork
готовый к предсказанию с помощью assembleNetwork
функция. Это позволяет вам использовать predict
функция с другими типами данных, такими как хранилища данных.
Загрузите параметры модели из файла MAT dlnetDigits.mat
. Файл MAT содержит dlnetwork
объект, который предсказывает и музыку к категориальным меткам и числовые углы вращения изображений цифр и соответствующие имена классов.
s = load("dlnetDigits.mat");
dlnet = s.dlnet;
classNames = s.classNames;
Извлеките график слоев из dlnetwork
объект с помощью layerGraph
функция.
lgraph = layerGraph(dlnet);
График слоев не включает выходные слои. Добавьте слой классификации и слой регрессии к графику слоев с помощью addLayers
и connectLayers
функции.
layers = classificationLayer('Classes',classNames,'Name','coutput'); lgraph = addLayers(lgraph,layers); lgraph = connectLayers(lgraph,'softmax','coutput'); layers = regressionLayer('Name','routput'); lgraph = addLayers(lgraph,layers); lgraph = connectLayers(lgraph,'fc2','routput');
Просмотрите график сети.
figure plot(lgraph)
Соберите сеть с помощью assembleNetwork
функция.
net = assembleNetwork(lgraph)
net = DAGNetwork with properties: Layers: [19x1 nnet.cnn.layer.Layer] Connections: [19x2 table] InputNames: {'in'} OutputNames: {'coutput' 'routput'}
Загрузите тестовые данные.
[XTest,Y1Test,Y2Test] = digitTest4DArrayData;
Чтобы сделать предсказания с помощью собранной сети, используйте predict
функция. Чтобы возвратить категориальные метки для классификации выход, установите 'ReturnCategorical'
опция к true
.
[Y1Pred,Y2Pred] = predict(net,XTest,'ReturnCategorical',true);
Оцените точность классификации.
accuracy = mean(Y1Pred==Y1Test)
accuracy = 0.9870
Оцените точность регрессии.
angleRMSE = sqrt(mean((Y2Pred - Y2Test).^2))
angleRMSE = single
6.0091
Просмотрите некоторые изображения с их предсказаниями. Отобразите предсказанные углы красного цвета и правильные метки зеленого цвета.
idx = randperm(size(XTest,4),9); figure for i = 1:9 subplot(3,3,i) I = XTest(:,:,:,idx(i)); imshow(I) hold on sz = size(I,1); offset = sz/2; thetaPred = Y2Pred(idx(i)); plot(offset*[1-tand(thetaPred) 1+tand(thetaPred)],[sz 0],'r--') thetaValidation = Y2Test(idx(i)); plot(offset*[1-tand(thetaValidation) 1+tand(thetaValidation)],[sz 0],'g--') hold off label = string(Y1Pred(idx(i))); title("Label: " + label) end
convolution2dLayer
| batchNormalizationLayer
| reluLayer
| fullyConnectedLayer
| softmaxLayer
| assembleNetwork
| predict