主要内容

flattenLayer

描述

压平层将输入的空间维度折叠为通道维度。

例如,如果层的输入是H——- - - - - -W——- - - - - -C——- - - - - -N——- - - - - -年代数组(图像序列),则扁平输出为(HWC)———N——- - - - - -年代数组中。

该层只支持序列输入。万博1manbetx

创建

描述

= flattenLayer创建一个扁平层。

例子

= flattenLayer(“名字”,的名字设置可选的的名字属性使用名称-值对。例如,flattenLayer('名称',' flatten1 ')创建一个带有名称的扁平层“flatten1”

属性

全部展开

层名,指定为字符向量或字符串标量。要在图层图中包含一个图层,你必须指定一个非空的惟一图层名。如果你用层和训练一个系列网络的名字设置为,然后软件在训练时自动为该层分配一个名称。

数据类型:字符|字符串

层的输入数。该层只接受单个输入。

数据类型:

输入图层名称。该层只接受单个输入。

数据类型:细胞

层的输出数量。这个层只有一个输出。

数据类型:

输出层的名称。这个层只有一个输出。

数据类型:细胞

对象的功能

例子

全部折叠

创建一个平面层的名称“flatten1”

图层=平面图层(“名字”,“flatten1”
属性:Name: ' flat1 '

为包含图像序列的数据(如视频和医疗图像数据)创建深度学习网络。

  • 要将图像序列输入到网络中,请使用序列输入层。

  • 为了独立地对每个时间步应用卷积运算,首先使用序列折叠层将图像序列转换为图像数组。

  • 要在执行这些操作后恢复序列结构,请使用序列展开层将该图像数组转换回图像序列。

  • 要将图像转换为特征向量,使用扁平层。

然后可以将向量序列输入到LSTM和BiLSTM层。

定义网络架构

创建一个分类LSTM网络,将28 × 28灰度图像序列分为10个类。

定义以下网络架构:

  • 输入大小为的序列输入层[28 28 1]

  • 一个包含20个5 × 5滤波器的卷积、批处理归一化和ReLU层块。

  • 一个包含200个隐藏单元的LSTM层,只输出最后一个时间步长。

  • 一个大小为10(类的数量)的完全连接层,后面是一个softmax层和一个分类层。

为了在每个时间步上独立地执行卷积运算,在卷积层之前包含一个序列折叠层。LSTM层期望向量序列输入。为了恢复序列结构,将卷积层的输出重塑为特征向量序列,在卷积层和LSTM层之间插入序列展开层和压平层。

inputSize = [28 28 1];filterSize = 5;numFilters = 20;numHiddenUnits = 200;numClasses = 10;图层= [...sequenceInputLayer (inputSize“名字”,“输入”) sequenceFoldingLayer (“名字”,“折”) convolution2dLayer (filterSize numFilters,“名字”,“conv”) batchNormalizationLayer (“名字”,bn的) reluLayer (“名字”,“relu”) sequenceUnfoldingLayer (“名字”,“展开”) flattenLayer (“名字”,“平”) lstmLayer (numHiddenUnits“OutputMode”,“最后一次”,“名字”,“lstm”) fullyConnectedLayer (numClasses“名字”,“俱乐部”) softmaxLayer (“名字”,“softmax”) classificationLayer (“名字”,“分类”));

将图层转换为图层图并连接miniBatchSize序列折叠层的输出到序列展开层的相应输入。

lgraph = layerGraph(图层);lgraph = connectLayers(lgraph,“折/ miniBatchSize”,“展开/ miniBatchSize”);

查看最终的网络架构情节函数。

图绘制(lgraph)

扩展功能

GPU代码生成
使用GPU Coder™为NVIDIA GPU生成CUDA®代码。

在R2019a中引入