在matlab CNN中获取错误的层大小

在matlab CNN中获取错误的层大小,matlab,neural-network,conv-neural-network,Matlab,Neural Network,Conv Neural Network,我试图重现中描述的卷积网络 他们的设置概述: 然而,我在尝试合并来自不同过滤器的结果时似乎遇到了障碍。 在本文中,作者有一个“叠加”层,其中20个不同的滤波一维信号被叠加,以创建一种谱图,然后将其馈送到另一个卷积层。在matlab中如何做类似的事情?以下是我尝试过的内容,以及我收到的错误消息: 输入: inputLayer=imageInputLayer([1 6000]); c1=convolution2dLayer([1 200],20,'stride',1); p1=maxP

我试图重现中描述的卷积网络

他们的设置概述:

然而,我在尝试合并来自不同过滤器的结果时似乎遇到了障碍。 在本文中,作者有一个“叠加”层,其中20个不同的滤波一维信号被叠加,以创建一种谱图,然后将其馈送到另一个卷积层。在matlab中如何做类似的事情?以下是我尝试过的内容,以及我收到的错误消息:

输入:

  inputLayer=imageInputLayer([1 6000]);
  c1=convolution2dLayer([1 200],20,'stride',1);
  p1=maxPooling2dLayer([1 20],'stride',10);
  c2=convolution2dLayer([20 30],400,'numChannels',20);
  p2=maxPooling2dLayer([1 10],'stride',[1 2]);
  f1=fullyConnectedLayer(500);
  f2=fullyConnectedLayer(500);
  s1=softmaxLayer;
  outputLayer=classificationLayer;

  convnet=[inputLayer; c1; p1; c2; p2; f1; f2; s1;outputLayer]

  opts = trainingOptions('sgdm');
  convnet = trainNetwork(allData',labels,convnet,opts);
输出:

  convnet = 

    9x1 Layer array with layers:

       1   ''   Image Input             1x6000x1 images with 'zerocenter' normalization
       2   ''   Convolution             20 1x200 convolutions with stride [1  1] and padding [0  0]
       3   ''   Max Pooling             1x20 max pooling with stride [10  10] and padding [0  0]
       4   ''   Convolution             400 20x30 convolutions with stride [1  1] and padding [0  0]
       5   ''   Max Pooling             1x10 max pooling with stride [1  2] and padding [0  0]
       6   ''   Fully Connected         500 fully connected layer
       7   ''   Fully Connected         500 fully connected layer
       8   ''   Softmax                 softmax
       9   ''   Classification Output   cross-entropy
  Error using nnet.cnn.layer.Layer>iInferSize (line 261)
  Layer 5 is expected to have a different size.

  Error in nnet.cnn.layer.Layer.inferParameters (line 53)
                  layers = iInferSize(layers, i, inputSize);

  Error in trainNetwork (line 61)
  layers = nnet.cnn.layer.Layer.inferParameters(layers);
错误消息是针对第5层的,但我怀疑它与第4层有关,即“堆叠”发生的位置。
思想?

这里的基本问题是卷积2D层不理解1D输入。通过深入细节,结果表明输入大小很快变得毫无意义(例如,行数为负数)