首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Matlab 2019b/2020a中,当构建DNN时,如何将完全连接的层的输出重塑为2D形状,以便预先训练的CNN可以跟随?

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

Stack Overflow用户
提问于 2020-10-20 01:27:24
回答 1查看 158关注 0票数 0

我正在使用深度学习工具箱来设计一个深度神经网络。在网络中,2D卷积层需要遵循完全连接的层。但是deepNetworkDesigner不允许这样的结构,因为完全连接层的输出是1D的。在像Torch这样的其他框架中,解决这个问题的方法是将完整图层的输出重塑为2D。有没有办法实现Matlab2019b/2020a?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-12-28 23:04:18

如果在不使用Deep Learning network Analyzer的情况下创建网络

可通过创建输出大小为10且名称为'fc1‘的全连接图层来完成此操作

代码语言:javascript
复制
layer = fullyConnectedLayer(10,'Name','fc1')

然后,将其包含在您的图层数组中

代码语言:javascript
复制
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.使用

  • 在Designer窗格中,将新的fullyConnectedLayer从Layer Library拖到画布上。将OutputSize设置为新data
  • 中的类数删除最后一个完全连接的图层并连接新图层而不是
  • 如果您的目标是开发分类网络,请替换输出图层。滚动到Layer Library的末尾,并将新的classificationLayer拖到画布上。删除原始输出层,并通过单击Analyze将新图层连接到网络instead
  • Check。如果深度学习网络分析器报告零错误,则网络已准备好进行训练。

图形用户界面2.不使用

  • 在“设计器”选项卡上,单击“导出”。根据网络架构的不同,Deep network Designer使用newlgraph = replaceLayer(lgraph,the layer you want to change, the desired new layer)
  • Use analyzeNetwork(newlgraph)将网络作为LayerGraph导出到最后一层,以检查网络是否已准备好进行训练。如果是,网络分析器必须报告零错误。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64432416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档