主要内容

SeriesNetwork

深度学习系列网络

描述

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

创建

有几种方法可以创建SeriesNetwork对象:

请注意

来了解其他经过训练的网络,比如googlenetresnet50,请参阅预先训练的深度神经网络

属性

全部展开

此属性是只读的。

网络层,指定为数组中。

此属性是只读的。

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

数据类型:细胞

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

数据类型:细胞

对象的功能

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

例子

全部折叠

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

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

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

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

网。层
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”);imd = imageDatastore (digitDatasetPath,...“IncludeSubfolders”,真的,...“LabelSource”“foldernames”);

该数据存储包含10,000个从0到9的合成图像。这些图像是通过对使用不同字体创建的数字图像应用随机转换生成的。每个数字图像是28 × 28像素。数据存储中每个类别包含相同数量的图像。

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

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

图中包含20个轴对象。axis对象1包含一个image类型的对象。axis对象2包含一个image类型的对象。axis对象3包含一个image类型的对象。axis对象4包含一个image类型的对象。axis对象5包含一个类型为image的对象。axis对象6包含一个image类型的对象。axis对象7包含一个image类型的对象。axis对象8包含一个image类型的对象。axis对象9包含一个image类型的对象。 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,开始训练。

选择= trainingOptions (“个”...“MaxEpochs”, 20岁,...“InitialLearnRate”1的军医,...“详细”假的,...“阴谋”“训练进步”);

培训网络。

网= 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);欧美= imdsTest.Labels;

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

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

扩展功能

介绍了R2016a