一、如何创建自己的网络?
DAG网络是用于深度学习的神经网络,其中的层为有向无环图。 DAG网络可以具有更复杂的体系结构,其中各层具有来自多层的输入和输出到多层的信息。 DAGNetwork对象具有单个输入层和单个输出层。
图层连接,指定为具有两列的表。每个表行代表层图中的一个连接。 第一列“源”指定每个连接的源。 第二列“目标”指定每个连接的目标。 连接源和目标可以是层名称,也可以是“ layerName / IOName”形式,其中“ IOName”是层输入或输出的名称。
下面是层和连接;
文章图片
文章图片
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) |
文章图片
% 添加一层卷积层 skipConv = convolution2dLayer(1,32,'Stride',2,'Name','skipConv'); lgraph = addLayers(lgraph,skipConv); figure plot(lgraph) |
文章图片
% 加法层将'relu_3'和'skipConv'层的输出求和。 lgraph = connectLayers(lgraph,'relu_1','skipConv'); lgraph = connectLayers(lgraph,'skipConv','add/in2'); figure plot(lgraph) |
文章图片
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); |
文章图片
文章图片
% 训练集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] |
% 对验证集进行分类并计算准确度 YPredicted = classify(net,XValidation); accuracy = mean(YPredicted == YValidation); disp(accuracy); |
【matlab深度学习(DAGNetwork入门之旅)】