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