示例深度学习网络架构
这个例子展示了如何为分类和回归任务定义简单的深度学习神经网络。
本例中的网络是基本网络,您可以根据自己的任务对其进行修改。例如,一些网络的部分可以替换为更深层的部分,这样可以更好地从数据中学习和处理数据。
网络的描述使用一串表示数据的不同维度的字符指定流经网络的数据的格式。这些格式包含以下一个或多个字符:
“S”
——空间“C”
——频道“B”
——批“T”
——时间“U”
——未指明的
例如,可以将二维图像数据表示为4d数组,其中前两个维度对应图像的空间维度,第三个维度对应图像的通道,第四个维度对应批处理维度。该表示形式为“SSCB”
(空间、空间、通道、批量)。
图像数据
图像数据通常具有两个或三个空间维度。
二维图像数据通常用这种格式表示
“SSCB”
(空间、空间、通道、批量)。3-D图像数据通常用这种格式表示
“SSSCB”
(空间、空间、空间、通道、批次)。
二维图像分类网络
一个二维图像分类网络地图“SSCB”
(空间、空间、通道、批)数据来“CB”
(通道、批处理)数据,然后将映射的数据传递给分类层。
全连接层处理数据,以便“C”
(通道)网络输出的维度与类的数量相匹配。softmax层将其输入数据转换为分类的概率向量。
inputSize = [224 224 3];numClasses = 10;filterSize = 3;numFilters = 128;layers = [imageInputLayer(inputSize)卷积2dlayer (filterSize,numFilters) batchNormalizationLayer reluLayer fullyConnectedLayer(numClasses) softmaxLayer classificationLayer];
您可以将卷积、批处理归一化、ReLU层块替换为处理二维图像数据的层块。这个块映射“SSCB”
(空间、空间、通道、批)数据来“SSCB”
(空间、空间、通道、批)数据。
有关如何训练用于图像分类的神经网络的示例,请参见创建简单的深度学习神经网络分类。
二维图像回归网络
一个二维图像回归网络映射“SSCB”
(空间、空间、通道、批)数据来“CB”
(通道,批处理)数据,然后将映射的数据传递给回归层。
全连接层处理数据,以便“C”
(通道)网络输出的维度与响应的数量相匹配。
inputSize = [224 224 3];numResponses = 10;filterSize = 3;numFilters = 128;layers = [imageInputLayer(inputSize)卷积2dlayer (filterSize,numFilters) batchNormalizationLayer reluLayer fulllyconnectedlayer (numResponses) regressionLayer];
您可以将卷积、批处理归一化、ReLU层块替换为处理二维图像数据的层块。这个块映射“SSCB”
(空间、空间、通道、批)数据来“SSCB”
(空间、空间、通道、批)数据。
有关如何训练用于图像回归的神经网络的示例,请参见训练卷积神经网络回归。
二维图像到图像回归网络
一个二维图像到图像的回归网络映射“SSCB”
(空间、空间、通道、批)数据来“SSCB”
(空间、空间、通道、批处理)数据,然后将映射的数据传递给回归层。
网络使用步幅为2的最大池化层对数据进行下采样。该网络使用转置卷积层对下采样数据进行上采样。
最后的卷积层处理数据,以便“C”
(通道)网络输出的维度与输出通道的数量相匹配。被剪辑的ReLU层剪辑它的输入,使得网络输出的数据在[0,1]范围内。
inputSize = [224 224 3];numOutputChannels = 3;filterSize = 3;numFilters = 128;layers = [imageInputLayer(inputSize)] convolution2dLayer(filterSize,numFilters,Padding= .“相同”) reluLayer maxPooling2dLayer(2,填充= .“相同”reluLayer (1,numOutputChannels,Padding= . 2“相同”) clippedReluLayer(1) regressionLayer];
你可以将卷积、ReLU、最大池化层块替换为下采样二维图像数据的层块。这个块映射“SSCB”
(空间、空间、通道、批)数据来“SSCB”
(空间、空间、通道、批)数据。
您可以将转置卷积、ReLU层块替换为上采样二维图像数据的层块。这个块映射“SSCB”
(空间、空间、通道、批)数据来“SSCB”
(空间、空间、通道、批)数据。
有关如何训练用于图像到图像回归的神经网络的示例,请参见为Image-to-Image回归准备数据存储。
三维图像分类网络
一个三维图像分类网络地图“SSSCB”
(空间、空间、空间、通道、批)数据来“CB”
(通道、批处理)数据,然后将映射的数据传递给分类层。
全连接层处理数据,以便“C”
(通道)网络输出的维度与类的数量相匹配。softmax层将其输入数据转换为分类的概率向量。
inputSize = [224 224 224 3];numClasses = 10;filterSize = 3;numFilters = 128;layers = [image3dInputLayer(inputSize)卷积3dlayer (filterSize,numFilters) batchNormalizationLayer reluLayer fullyConnectedLayer(numClasses) softmaxLayer classificationLayer];
您可以将卷积、批处理归一化、ReLU层块替换为处理3d图像数据的层块。这个块映射“SSSCB”
(空间、空间、空间、通道、批)数据来“SSSCB”
(空间、空间、空间、通道、批)数据。
三维图像回归网络
一个三维图像回归网络映射“SSSCB”
(空间、空间、空间、通道、批)数据来“CB”
(通道,批处理)数据,然后将映射的数据传递给回归层。
全连接层处理数据,以便“C”
(通道)网络输出的维度与响应的数量相匹配。
inputSize = [224 224 224 3];numResponses = 10;filterSize = 3;numFilters = 128;layers = [image3dInputLayer(inputSize)卷积3dlayer (filterSize,numFilters) batchNormalizationLayer reluLayer fulllyconnectedlayer (numResponses) regressionLayer];
您可以将卷积、批处理归一化、ReLU层块替换为处理3d图像数据的层块。这个块映射“SSSCB”
(空间、空间、空间、通道、批)数据来“SSSCB”
(空间、空间、空间、通道、批)数据。
序列数据
序列数据通常有一个时间维度。
向量序列数据通常用以下格式表示
“认知行为治疗”
(通道,批次,时间)。二维图像序列数据通常用这种格式表示
“SSCBT”
(空间、空间、通道、批次、时间)。三维图像序列数据通常用这种格式表示
“SSSCBT”
(空间、空间、空间、通道、批次、时间)。
向量序列到标签分类网络
一个向量序列到标签的分类网络映射“认知行为治疗”
(通道、批、时)数据到“CB”
(通道、批处理)数据,然后将映射的数据传递给分类层。
LSTM网络
当OutputMode
LSTM层的选项为“最后一次”
,该层仅以格式输出数据的最后一个时间步长“CB”
(频道,批处理)。
全连接层处理数据,以便“C”
(通道)网络输出的维度与类的数量相匹配。softmax层将其输入数据转换为分类的概率向量。
numFeatures = 15;numClasses = 10;numHiddenUnits = 100;layers = [sequenceInputLayer(numFeatures)] lstmLayer(numHiddenUnits,OutputMode= .“最后一次”) fulllyconnectedlayer (numClasses) softmaxLayer classificationLayer];
可以用处理向量序列数据的层块替换LSTM层。这个图层映射“认知行为治疗”
(通道、批、时)数据到“CB”
(通道、批)数据。
有关如何训练LSTM网络进行分类的示例,请参见使用深度学习的序列分类。
卷积网络
一维卷积层对“T”
(时间)其输入数据的维数。1-D全局最大池化层映射“认知行为治疗”
(通道、批、时)数据到“CB”
(通道、批)数据。
全连接层处理数据,以便“C”
(通道)网络输出的维度与类的数量相匹配。softmax层将其输入数据转换为分类的概率向量。
numFeatures = 15;numClasses = 10;minLength = 100;filterSize = 3;numFilters = 128;layers = [sequenceInputLayer(numFeatures,MinLength= MinLength)卷积1dlayer (filterSize,numFilters) batchNormalizationLayer reluLayer globalMaxPooling1dLayer fulllyconnectedlayer (numClasses) softmaxLayer classificationLayer];
您可以用处理序列数据的层块替换卷积、批处理规范化、ReLU层块。这个块映射“认知行为治疗”
(通道、批、时)数据到“认知行为治疗”
(通道、批次、时间)数据。
有关如何使用1-D卷积训练分类网络的示例,请参见使用一维卷积的序列分类。
向量序列对一回归网络
一个向量序列到一的回归网络映射“认知行为治疗”
(通道、批、时)数据到“CB”
(通道,批处理)数据,然后将映射的数据传递给回归层。
当OutputMode
LSTM层的选项为“最后一次”
,该层仅以格式输出数据的最后一个时间步长“CB”
(频道,批处理)。
全连接层处理数据,以便“C”
(通道)网络输出的维度与响应的数量相匹配。
numFeatures = 15;numResponses = 10;numHiddenUnits = 100;layers = [sequenceInputLayer(numFeatures)] lstmLayer(numHiddenUnits,OutputMode= .“最后一次”) fulllyconnectedlayer (numResponses) regressionLayer];
您可以将LSTM层替换为处理向量序列数据的层块。这个图层映射“认知行为治疗”
(通道、批、时)数据到“CB”
(通道、批)数据。
有关如何训练LSTM网络进行回归的示例,请参见使用深度学习的序列对一回归。
向量序列到序列分类网络
一个向量序列到序列的分类网络映射“认知行为治疗”
(通道、批、时)数据到“认知行为治疗”
(通道、批处理、时间)数据,然后将映射的数据传递给分类层。
当OutputMode
LSTM层的选项为“序列”
,该层以格式输出数据的所有时间步长“认知行为治疗”
(通道,批次,时间)。
全连接层处理数据,以便“C”
(通道)网络输出的维度与类的数量相匹配。softmax层将其输入数据的时间步长转换为分类的概率向量。
numFeatures = 15;numClasses = 10;numHiddenUnits = 100;layers = [sequenceInputLayer(numFeatures) lstmLayer(numHiddenUnits) fulllyconnectedlayer (numClasses) softmaxLayer classificationLayer];
您可以将LSTM层替换为处理向量序列数据的层块。这个图层映射“认知行为治疗”
(通道、批、时)数据到“认知行为治疗”
(通道、批次、时间)数据。
有关如何训练LSTM网络进行序列到序列分类的示例,请参见使用深度学习的序列到序列分类。
向量序列到序列回归网络
一个向量序列到序列的回归网络映射“认知行为治疗”
(通道、批、时)数据到“认知行为治疗”
(通道、批处理、时间)数据,然后将映射的数据传递给回归层。
当OutputMode
LSTM层的选项为“序列”
,该层以格式输出数据的所有时间步长“认知行为治疗”
(通道,批次,时间)。
全连接层处理数据,以便“C”
(通道)网络输出的维度与响应的数量相匹配。
numFeatures = 15;numResponses = 10;numHiddenUnits = 100;layers = [sequenceInputLayer(numFeatures) lstmLayer(numHiddenUnits) fulllyconnectedlayer (numResponses) regressionLayer];
您可以将LSTM层替换为处理向量序列数据的层块。这个图层映射“认知行为治疗”
(通道、批、时)数据到“认知行为治疗”
(通道、批次、时间)数据。
有关演示如何训练序列到序列回归网络的示例,请参见使用深度学习的序列到序列回归。
图像序列到标签分类网络
一个图像序列到标签的分类网络映射“SSCBT”
(空间、空间、通道、批、时间)数据来“CB”
数据(通道、批处理),然后将映射的数据传递给分类层。
卷积层独立处理帧。为了将处理过的帧映射到矢量序列数据,网络使用一个映射的平坦层“SSCBT”
(空间、空间、通道、批、时间)数据来“认知行为治疗”
(通道、批次、时间)数据。
当OutputMode
LSTM层的选项为“最后一次”
,该层仅以格式输出数据的最后一个时间步长“CB”
(频道,批处理)。
全连接层处理数据,以便“C”
(通道)网络输出的维度与类的数量相匹配。softmax层将其输入数据的时间步长转换为分类的概率向量。
inputSize = [224 224 3];numClasses = 10;numHiddenUnits = 100;filterSize = 3;numFilters = 224;layers = [sequenceInputLayer(inputSize)卷积2dlayer (filterSize,numFilters) batchNormalizationLayer reluLayer flatlayer lstmLayer(numHiddenUnits,OutputMode= .“最后一次”) fulllyconnectedlayer (numClasses) softmaxLayer classificationLayer];
您可以将卷积、批处理归一化、ReLU层块替换为处理二维图像序列的层块。这个块映射“SSCBT”
(空间、空间、通道、批、时间)数据来“SSCBT”
(空间、空间、通道、批、时间)数据。
您可以将LSTM层替换为处理向量序列数据的层块。这个图层映射“认知行为治疗”
(通道、批、时)数据到“CB”
(通道、批)数据。
对于图像序列到序列分类,例如,每帧视频分类,设置OutputMode
将LSTM层设置为“序列”
。
有关演示如何训练用于视频分类的图像序列到标签分类网络的示例,请参见使用深度学习对视频进行分类。
图像序列对一回归网络
一个图像序列到一的回归网络映射“SSCBT”
(空间、空间、通道、批、时间)数据来“CB”
数据(通道、批处理),然后将映射的数据传递给回归层。
卷积层独立处理帧。为了将处理过的帧映射到矢量序列数据,网络使用一个映射的平坦层“SSCBT”
(空间、空间、通道、批、时间)数据来“认知行为治疗”
(通道、批次、时间)数据。
当OutputMode
LSTM层的选项为“最后一次”
,该层仅以格式输出数据的最后一个时间步长“CB”
(频道,批处理)。
全连接层处理数据,以便“C”
(通道)网络输出的维度与响应的数量相匹配。
inputSize = [224 224 3];numResponses = 10;numHiddenUnits = 100;filterSize = 3;numFilters = 224;layers = [sequenceInputLayer(inputSize)卷积2dlayer (filterSize,numFilters) batchNormalizationLayer reluLayer flatlayer lstmLayer(numHiddenUnits,OutputMode= .“最后一次”) fulllyconnectedlayer (numResponses) regressionLayer];
您可以将卷积、批处理归一化、ReLU层块替换为处理二维图像序列的层块。这个块映射“SSCBT”
(空间、空间、通道、批、时间)数据来“SSCBT”
(空间、空间、通道、批、时间)数据。
您可以将LSTM层替换为处理向量序列数据的层块。这个图层映射“认知行为治疗”
(通道、批、时)数据到“CB”
(通道、批)数据。
对于图像序列到序列的回归,例如,每帧视频回归,设置OutputMode
将LSTM层设置为“序列”
。
特性数据
特征数据通常用以下格式表示“CB”
(频道,批处理)。
特征分类网络
一个特征分类网络地图“CB”
(通道,批处理)数据到“CB”
(通道、批处理)数据,然后将映射的数据传递给分类层。
多层感知器分类网络
全连接层处理数据,以便“C”
(通道)网络输出的维度与类的数量相匹配。softmax层将其输入数据转换为分类的概率向量。
numFeatures = 15;numClasses = 10;hiddenSize = 100;layers = [featureInputLayer(numFeatures) fulllyconnectedlayer (hiddenSize) reluLayer fulllyconnectedlayer (numClasses) softmaxLayer classificationLayer];
您可以用处理特征数据的层块替换第一个完全连接的层和ReLU层。这个块映射“CB”
(通道,批处理)数据到“CB”
(通道、批)数据。
有关如何训练特征分类网络的示例,请参见具有数字特征的列车网络。
特征回归网络
一个特征回归网络映射“CB”
(通道,批处理)数据到“CB”
数据(通道、批处理),然后将映射的数据传递给回归层。
多层感知器回归网络
全连接层处理数据,以便“C”
(通道)网络输出的维度与响应的数量相匹配。
numFeatures = 15;numResponses = 10;hiddenSize = 100;layers = [featureInputLayer(numFeatures) fulllyconnectedlayer (hiddenSize) reluLayer fulllyconnectedlayer (numResponses) regressionLayer];
您可以用处理特征数据的层块替换第一个完全连接的层和ReLU层。这个块映射“CB”
(通道,批处理)数据到“CB”
(通道、批)数据。
多输入网络
神经网络可以有多个输入。具有多个输入的网络通常处理来自不同来源的数据,并使用组合层(如附加层或连接层)合并处理过的数据。
多重二维图像输入分类网络
一个多重二维图像输入分类网络地图“SSCB”
(空间、空间、通道、批处理)数据从多个来源来“CB”
(通道、批处理)数据,然后将映射的数据传递给分类层。
平面层映射“SSCB”
(空间、空间、通道、批)数据来“CB”
(通道、批)数据。连接层以该格式连接两个输入“CB”
(通道、批)沿“C”
(频道)维度。全连接层处理数据,以便“C”
(通道)网络输出的维度与类的数量相匹配。softmax层将其输入数据转换为分类的概率向量。
inputSize1 = [224 224 3];inputSize2 = [64 64 1];numClasses = 10;filterSize1 = 5;numFilters1 = 128;filterSize2 = 3;numFilters2 = 64;layers = [imageInputLayer(inputSize1)卷积2dlayer (filterSize1,numFilters1) batchNormalizationLayer reluLayer flatlayer concatenationLayer(1,2,Name= . 1)“猫”) fulllyconnectedlayer (numClasses) softmaxLayer classificationLayer];lgraph = layerGraph(layers);layers = [imageInputLayer(inputSize2)] convolution2dLayer(filterSize2,numFilters2) batchNormalizationLayer reluLayer flatlayer (Name=“flatten2”));lgraph = addLayers(lgraph,layers);lgraph = connectLayers(lgraph,“flatten2”,“猫/ in2”);图绘制(lgraph)
您可以将卷积、批处理归一化、ReLU层块替换为处理二维图像数据的层块。这些块映射“SSCB”
(空间、空间、通道、批)数据来“SSCB”
(空间、空间、通道、批)数据。
多元二维图像输入回归网络
一个多二维图像输入回归网络映射“SSCB”
(空间、空间、通道、批处理)数据从多个来源来“CB”
(通道,批处理)数据,然后将映射的数据传递给回归层。
平面层映射“SSCB”
(空间、空间、通道、批)数据来“CB”
(通道、批)数据。连接层以该格式连接两个输入“CB”
(通道、批)沿“C”
(频道)维度。全连接层处理数据,以便“C”
(通道)网络输出的维度与响应的数量相匹配。
inputSize1 = [224 224 3];inputSize2 = [64 64 1];numResponses = 10;filterSize1 = 5;numFilters1 = 128;filterSize2 = 3;numFilters2 = 64;layers = [imageInputLayer(inputSize1)卷积2dlayer (filterSize1,numFilters1) batchNormalizationLayer reluLayer flatlayer concatenationLayer(1,2,Name= . 1)“猫”) fulllyconnectedlayer (numResponses) regressionLayer];lgraph = layerGraph(layers);layers = [imageInputLayer(inputSize2)] convolution2dLayer(filterSize2,numFilters2) batchNormalizationLayer reluLayer flatlayer (Name=“flatten2”));lgraph = addLayers(lgraph,layers);lgraph = connectLayers(lgraph,“flatten2”,“猫/ in2”);图绘制(lgraph)
您可以将卷积、批处理归一化、ReLU层块替换为处理二维图像数据的层块。这些块映射“SSCB”
(空间、空间、通道、批)数据来“SSCB”
(空间、空间、通道、批)数据。
二维图像与特征分类网络
一个二维图像和特征分类网络映射一个输入“SSCB”
(空间、空间、通道、批)数据的一次输入“CB”
(通道,批处理)数据到“CB”
(通道、批处理)数据,然后将映射的数据传递给分类层。
平面层映射“SSCB”
(空间、空间、通道、批)数据来“CB”
(通道、批)数据。连接层以该格式连接两个输入“CB”
(通道、批)沿“C”
(频道)维度。全连接层处理数据,以便“C”
(通道)网络输出的维度与类的数量相匹配。softmax层将其输入数据转换为分类的概率向量。
inputSize = [224 224 3];numFeatures = 15;numClasses = 10;filterSize = 5;numFilters = 128;hiddenSize = 100;layers = [imageInputLayer(inputSize)卷积2dlayer (filterSize,numFilters) batchNormalizationLayer reluLayer flatlayer concatenationLayer(1,2,Name= . .“猫”) fulllyconnectedlayer (numClasses) softmaxLayer classificationLayer];lgraph = layerGraph(layers);layers = [featureInputLayer(numFeatures) fulllyconnectedlayer (hiddenSize) reluLayer(Name= . properties)“relu2”));lgraph = addLayers(lgraph,layers);lgraph = connectLayers(lgraph,“relu2”,“猫/ in2”);图绘制(lgraph)
您可以将卷积、批处理归一化、ReLU层块替换为处理二维图像数据的层块。这个块映射“SSCB”
(空间、空间、通道、批)数据来“SSCB”
(空间、空间、通道、批)数据。
可以用处理特征数据的层块替换特征分支中的全连接层和ReLU层。这个块映射“CB”
(通道,批处理)数据到“CB”
(通道、批)数据。
有关如何在图像和特征数据上训练网络的示例,请参见基于图像和特征数据的训练网络。
二维图像和矢量序列分类网络
一个二维图像和向量序列分类网络映射一个输入“SSCB”
(空间、空间、通道、批)数据的一次输入“认知行为治疗”
(通道、批、时)数据到“CB”
(通道、批处理)数据,然后将映射的数据传递给分类层。
平面层映射“SSCB”
(空间、空间、通道、批)数据来“CB”
(通道、批)数据。当OutputMode
LSTM层的选项为“最后一次”
,该层仅以格式输出数据的最后一个时间步长“CB”
(频道,批处理)。连接层以该格式连接两个输入“CB”
(通道、批)沿“C”
(频道)维度。全连接层处理数据,以便“C”
(通道)网络输出的维度与类的数量相匹配。softmax层将其输入数据转换为分类的概率向量。
inputSize = [224 224 3];numFeatures = 15;numClasses = 10;filterSize = 5;numFilters = 128;numHiddenUnits = 100;layers = [imageInputLayer(inputSize)卷积2dlayer (filterSize,numFilters) batchNormalizationLayer reluLayer flatlayer concatenationLayer(1,2,Name= . .“猫”) fulllyconnectedlayer (numClasses) softmaxLayer classificationLayer];lgraph = layerGraph(layers);layers = [sequenceInputLayer(numFeatures)] lstmLayer(hiddenSize,OutputMode=“最后一次”、名称=“lstm”));lgraph = addLayers(lgraph,layers);lgraph = connectLayers(lgraph,“lstm”,“猫/ in2”);图绘制(lgraph)
您可以将卷积、批处理归一化、ReLU层块替换为处理二维图像数据的层块。这个块映射“SSCB”
(空间、空间、通道、批)数据来“SSCB”
(空间、空间、通道、批)数据。
您可以将LSTM层替换为处理向量序列数据的层块。这个图层映射“认知行为治疗”
(通道、批、时)数据到“CB”
(通道、批)数据。
向量序列与特征分类网络
向量序列和特征分类网络映射的一个输入“认知行为治疗”
(通道,批次,时间)数据和一个输入“CB”
(通道,批处理)数据到“CB”
(通道、批处理)数据,然后将映射的数据传递给分类层。
当OutputMode
LSTM层的选项为“最后一次”
,该层仅以格式输出数据的最后一个时间步长“CB”
(频道,批处理)。连接层以该格式连接两个输入“CB”
(通道、批)沿“C”
(频道)维度。全连接层处理数据,以便“C”
(通道)网络输出的维度与类的数量相匹配。softmax层将其输入数据转换为分类的概率向量。
numFeatures = 15;numFeaturesSequence = 20;numClasses = 10;numHiddenUnits = 128;hiddenSize = 100;layers = [sequenceInputLayer(numFeaturesSequence)] lstmLayer(numHiddenUnits,OutputMode=“最后一次”) concatenationLayer(1、2、Name =“猫”) fulllyconnectedlayer (numClasses) softmaxLayer classificationLayer];lgraph = layerGraph(layers);layers = [featureInputLayer(numFeatures) fulllyconnectedlayer (hiddenSize) reluLayer(Name= . properties)“relu2”));lgraph = addLayers(lgraph,layers);lgraph = connectLayers(lgraph,“relu2”,“猫/ in2”);图绘制(lgraph)
您可以将LSTM层替换为处理向量序列数据的层块。这个图层映射“认知行为治疗”
(通道、批、时)数据到“CB”
(通道、批)数据。
可以用处理特征数据的层块替换特征分支中的全连接层和ReLU层。这个块映射“CB”
(通道,批处理)数据到“CB”
(通道、批)数据。
另请参阅
trainNetwork
|analyzeNetwork
|layerGraph
|深度网络设计器