主要内容

SeriesNetwork

系列网络深度学习

描述

序列网络是一种层次化的深度学习神经网络。它只有一个输入层和一个输出层。

创建

有几种方法可以创建SeriesNetwork目的:

请注意

了解其他预折磨网络,例如googlenetresnet50,请参阅普里德深度神经网络

属性

全部展开

此属性是只读的。

网络图层,指定为a数组中。

此属性是只读的。

网络输入层名称,指定为字符向量的单元格数组。

数据类型:细胞

网络输出层名称,指定为字符向量的单元格数组。

数据类型:细胞

对象的功能

激活 计算深度学习网络层激活
分类 使用训练的深度学习神经网络对数据进行分类
预测 使用训练有素的深度学习神经网络预测反应
predictAndUpdateState 使用训练有素的递归神经网络预测反应并更新网络状态
classifyAndUpdateState 利用训练有素的递归神经网络对数据进行分类,并更新网络状态
重置静止 重置递归神经网络的状态
情节 绘制神经网络层图

例子

全部折叠

加载一个预先训练的AlexNet卷积神经网络并检查层和类。

使用加载预先训练的AlexNet网络AlexNet..输出是一个SeriesNetwork目的。

网= alexnet
net = SeriesNetwork with properties: Layers: [25×1 net.cnn.layer. layer]

使用属性,查看网络架构。该网络由25层组成。有8个具有可学习权值的层:5个卷积层和3个完全连接层。

net.layers.
ans = 25x1 Layer array with layers:227 x227x3数据的图像输入图像的zerocenter正常化2 conv1卷积96年11 x11x3旋转步[4 4]和填充[0 0 0 0]3‘relu1 ReLU ReLU 4“norm1”横通道正常化横通道规范化5频道每个元素5“pool1”马克斯池3 x3 Max池步(2 - 2)和填充[0 0 0 0]6conv2的分组卷积2组128 5 x5x48旋转步[1]和填充(2 2 2 2)7的relu2 ReLU ReLU 8 norm2的横通道正常化横通道正常化与5频道/元素9“pool2”马克斯池3 x3马克斯池步(2 - 2)和填充[0 0 0 0]384 3 x3x256 conv3的卷积运算步伐[1]和填充[1 1 1 1]11的relu3 ReLU ReLU 12“conv4”分组卷积2组192 3 x3x192旋转步[1]和填充[1 1 1 1]13的relu4 ReLU ReLU 14“conv5”分组卷积2组128 3 x3x192旋转步[1]和填充[1 1 1 1]15 ' relu5 ReLU ReLU 16 pool5马克斯池3 x3 Max池与步幅[2 2]和填充[0 0 0 0]17 fc6完全连接4096完全连接层18“relu6”ReLU ReLU 19“drop6”辍学50%辍学20 fc7完全连接4096完全连接层21“relu7”ReLU ReLU 22“drop7”辍学50%辍学23 fc8完全连接1000完全连接层24“概率”Softmax Softmax 25“输出”输出与'tench'和999其他类交叉

您可以通过查看网络来查看网络学习的类的名称属性的分类输出层(最后一层)。通过选择前10个元素来查看前10个类。

net.Layers(结束). class (1:10)
ans =10×1分类数组坦奇金鱼大白鲨虎鲨双髻鲨电鳐黄貂鱼公鸡母鸡鸵鸟

指定示例文件“digitsnet.prototxt”导入。

protofile =“digitsnet.prototxt”

导入网络层。

层= importCaffeLayers (protofile)
图层数组与图层:1“testdata”图像输入28 x28x1图片2的conv1卷积20 5 x5x1旋转步[1]和填充[0 0]3‘relu1 ReLU ReLU 4“pool1”马克斯池2 x2马克斯池步(2 - 2)和填充[0 0]5“ip1”完全连接10完全连接层6‘损失’Softmax Softmax 7“输出”分类输出crossentropyex class1,'class2', and 8 other classes

将数据加载为ImageDatastore目的。

digitDatasetPath = fullfile (matlabroot,'工具箱'“nnet”...“nndemos”“nndatasets”“DigitDataset”);imds = imageageataStore(DigitDatasetPath,...'insertumbfolders',真的,...'labelsource'“foldernames”);

数据存储区包含从0到9的数字的10,000个合成图像。通过将随机变换应用于以不同字体创建的数字图像来生成图像。每个数字图像是28×28像素。数据存储区每个类别包含相同数量的图像。

在数据存储中显示一些图像。

图numimages = 10000;perm = randperm(numimages,20);I = 1:20 subplot(4,5, I);imshow (imds.Files{烫发(i)});drawnow;结束

图包含20个轴对象。轴对象1包含类型图像的对象。轴对象2包含类型图像的对象。轴对象3包含类型图像的对象。轴对象4包含类型图像的对象。轴对象5包含类型图像的对象。轴对象6包含类型图像的对象。轴对象7包含类型图像的对象。轴对象8包含类型图像的对象。轴对象9包含类型图像的对象。 Axes object 10 contains an object of type image. Axes object 11 contains an object of type image. Axes object 12 contains an object of type image. Axes object 13 contains an object of type image. Axes object 14 contains an object of type image. Axes object 15 contains an object of type image. Axes object 16 contains an object of type image. Axes object 17 contains an object of type image. Axes object 18 contains an object of type image. Axes object 19 contains an object of type image. Axes object 20 contains an object of type image.

划分数据存储,使训练集中的每个类别有750幅图像,测试集中有来自每个标签的剩余图像。

numTrainingFiles = 750;[imdsTrain, imdsTest] = splitEachLabel (imd, numTrainingFiles“随机”);

splitEachLabel分割图像文件digitData进入两个新数据存储,imdsTrainIMDSTEST.

定义卷积神经网络结构。

层= [...imageInputLayer([28 28 1])卷积2dlayer (5,20) reluLayer maxPooling2dLayer(2, 20)“步”,2) fulllyconnectedlayer (10) softmaxLayer classificationLayer;

将动量随机梯度下降的选项设置为默认设置。设置最大纪元数为20,初始学习率为0.0001,开始训练。

选项=培训选项(“个”...“MaxEpochs”, 20岁,...“InitialLearnRate”1的军医,...“详细”,错误的,...“阴谋”“训练进步”);

培训网络。

net = trainnetwork(Imdstrain,图层,选项);

Figure Training Progress (01-Sep-2021 08:30:15)包含2个轴对象和另一个uigridlayout类型的对象。axis对象1包含6个类型为patch, text, line的对象。axis对象2包含6个类型为patch, text, line的对象。

在未用于训练网络的测试集中运行训练网络,并预测图像标签(数字)。

Ypred =分类(网络,IMDSTEST);ytest = imdstest.labels;

计算的准确性。准确率是测试数据中与分类匹配的真标签数的比率分类到测试数据中的图像数量。

精度= sum(YPred == YTest)/numel(YTest)
精度= 0.9404.

扩展功能

介绍了R2016a