在Matlab 2019b/2020a中,在构建DNN时,如何将完全连接层的输出重塑为2D形状,以便可以跟随预训练的CNN?

在Matlab 2019b/2020a中,在构建DNN时,如何将完全连接层的输出重塑为2D形状,以便可以跟随预训练的CNN?,matlab,deep-learning,Matlab,Deep Learning,我正在使用深度学习工具箱设计一个深度神经网络。在网络中,二维卷积层需要跟随完全连接的层。但是deepNetworkDesigner不允许这种结构,因为完全连接层的输出是1D。在其他框架(如Torch)中,解决此问题的方法是将完整层的输出重塑为2D。有没有一种方法可以通过Matlab 2019b/2020a实现?谢谢。如果您未使用深度学习网络分析仪创建网络 您可以通过创建一个输出大小为10且名称为“fc1”的完全连接层来实现此目的 layer = fullyConnectedLayer(10,'N

我正在使用深度学习工具箱设计一个深度神经网络。在网络中,二维卷积层需要跟随完全连接的层。但是deepNetworkDesigner不允许这种结构,因为完全连接层的输出是1D。在其他框架(如Torch)中,解决此问题的方法是将完整层的输出重塑为2D。有没有一种方法可以通过Matlab 2019b/2020a实现?谢谢。

如果您未使用深度学习网络分析仪创建网络 您可以通过创建一个输出大小为10且名称为“fc1”的完全连接层来实现此目的

layer = fullyConnectedLayer(10,'Name','fc1')
然后,通过将其包含在图层阵列中

layers = [ ...
imageInputLayer([28 28 1])
convolution2dLayer(5,20)
reluLayer
maxPooling2dLayer(2,'Stride',2)
fullyConnectedLayer(10)
softmaxLayer
classificationLayer]
如您所见,完全连接的2D层之后是大小为10的完全连接层,没有任何问题

顾名思义,一个完全连接的层中的所有神经元都连接在一起 前一层的所有神经元。该层结合了所有 由上一层跨多个层学习的特征(本地信息) 该图像用于识别较大的图案。分类 如果出现问题,最后一个完全连接的层将功能组合到 对图像进行分类。这就是输出大小参数 最后一个完全连接的网络层的 数据集的类数。对于回归问题,输出 大小必须等于响应变量的数量

然后,您可以通过将图层图创建为
lgraph=layerGraph(layers)


如果您已经使用Deep network Designer设计了网络 您可以将网络的体系结构导出到工作区,并通过两种方式修改其输出层:

1。使用GUI

  • 在设计器窗格中,将新的
    fullyConnectedLayer
    从层库拖到画布上。将
    OutputSize
    设置为新数据中的类数
  • 删除最后一个完全连接的层,然后连接新层
  • 如果您的目标是开发分类网络,请替换输出层。滚动到层库的末尾,并将新的
    classificationLayer
    拖到画布上。删除原始输出层并连接新层
  • 通过单击“分析”检查您的网络。如果Deep Learning network Analyzer报告零错误,则网络已准备好接受培训
2。不使用GUI

  • 在“设计器”选项卡上,单击“导出”。根据网络体系结构,Deep network Designer将网络导出为LayerGraph
    lgraph
  • 将最后一层替换为使用
    newlgraph=replaceLayer(lgraph,您要更改的层,所需的新层)
  • 使用
    分析网络(newlgraph)
    检查网络是否已准备好接受培训。如果是这样,网络分析仪必须报告零错误