matlab深度学习:DAGNetwork入门之旅

一、如何创建自己的网络?

DAG网络是用于深度学习的神经网络,其中的层为有向无环图。 DAG网络可以具有更复杂的体系结构,其中各层具有来自多层的输入和输出到多层的信息。 DAGNetwork对象具有单个输入层和单个输出层。

图层连接,指定为具有两列的表。每个表行代表层图中的一个连接。 第一列“源”指定每个连接的源。 第二列“目标”指定每个连接的目标。 连接源和目标可以是层名称,也可以是“ layerName / IOName”形式,其中“ IOName”是层输入或输出的名称。

下面是层和连接;

matlab深度学习:DAGNetwork入门之旅_第1张图片matlab深度学习:DAGNetwork入门之旅_第2张图片

Object Functions

activations Compute convolutional neural network layer activations
classify Classify data using a trained deep learning neural network
predict Predict responses using a trained deep learning neural network
plot Plot neural network layer graph

layers = [
    imageInputLayer([28 28 1],'Name','input')
    
    convolution2dLayer(5,16,'Padding','same','Name','conv_1')
    batchNormalizationLayer('Name','BN_1')
    reluLayer('Name','relu_1')
    
    convolution2dLayer(3,32,'Padding','same','Stride',2,'Name','conv_2')
    batchNormalizationLayer('Name','BN_2')
    reluLayer('Name','relu_2')
    convolution2dLayer(3,32,'Padding','same','Name','conv_3')
    batchNormalizationLayer('Name','BN_3')
    reluLayer('Name','relu_3')
    
    additionLayer(2,'Name','add')
    
    averagePooling2dLayer(2,'Stride',2,'Name','avpool')
    fullyConnectedLayer(10,'Name','fc')
    softmaxLayer('Name','softmax')
    classificationLayer('Name','classOutput')];

lgraph = layerGraph(layers);
figure
plot(lgraph)

matlab深度学习:DAGNetwork入门之旅_第3张图片

% 添加一层卷积层
skipConv = convolution2dLayer(1,32,'Stride',2,'Name','skipConv');
lgraph = addLayers(lgraph,skipConv);
figure
plot(lgraph)

matlab深度学习:DAGNetwork入门之旅_第4张图片

% 加法层将'relu_3'和'skipConv'层的输出求和。
lgraph = connectLayers(lgraph,'relu_1','skipConv');
lgraph = connectLayers(lgraph,'skipConv','add/in2');
figure
plot(lgraph)

matlab深度学习:DAGNetwork入门之旅_第5张图片

2、加载数据并训练网络

% 加载数据集;28×28的数字图像
[XTrain,YTrain] = digitTrain4DArrayData;
[XValidation,YValidation] = digitTest4DArrayData;

% 指定训练参数
options = trainingOptions('sgdm',...
    'MaxEpochs',10,...
    'Shuffle','every-epoch',...
    'ValidationData',{XValidation,YValidation},...
    'ValidationFrequency',30,...
    'Verbose',false,...
    'Plots','training-progress');

net = trainNetwork(XTrain,YTrain,lgraph,options);

 

matlab深度学习:DAGNetwork入门之旅_第6张图片

matlab深度学习:DAGNetwork入门之旅_第7张图片

% 训练集XTrain的激活
act5 = activations(net,XTrain,'fc','OutputAs','columns');
save('digitTrain_fc.mat','act5');

% 显示训练网络的参数

>>net

net = 
  DAGNetwork with properties:

         Layers: [16×1 nnet.cnn.layer.Layer]
    Connections: [16×2 table]

3、对验证图像进行分类并计算准确性

% 对验证集进行分类并计算准确度
YPredicted = classify(net,XValidation);
accuracy = mean(YPredicted == YValidation);
disp(accuracy);

输出结果准确率accuracy= 0.9976

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(matlab-CV)