我正在使用深度学习工具箱来设计一个深度神经网络。在网络中,2D卷积层需要遵循完全连接的层。但是deepNetworkDesigner不允许这样的结构,因为完全连接层的输出是1D的。在像Torch这样的其他框架中,解决这个问题的方法是将完整图层的输出重塑为2D。有没有办法实现Matlab2019b/2020a?谢谢。
发布于 2020-12-28 23:04:18
如果在不使用Deep Learning network Analyzer的情况下创建网络
可通过创建输出大小为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.使用
fullyConnectedLayer从Layer Library拖到画布上。将OutputSize设置为新dataclassificationLayer拖到画布上。删除原始输出层,并通过单击Analyze将新图层连接到网络instead图形用户界面2.不使用
newlgraph = replaceLayer(lgraph,the layer you want to change, the desired new layer)analyzeNetwork(newlgraph)将网络作为LayerGraph导出到最后一层,以检查网络是否已准备好进行训练。如果是,网络分析器必须报告零错误。https://stackoverflow.com/questions/64432416
复制相似问题