globalAveragePooling1dLayer error
    8 views (last 30 days)
  
       Show older comments
    
    Bram Stegeman
 on 16 Jan 2022
  
    
    
    
    
    Edited: Bram Stegeman
 on 18 Jan 2022
            Dear Community,
I want to train and test a 1D convolutional network for sequence - to - sequence classification. 
I have the following architecture:
layers = [ ...
    sequenceInputLayer(numFeatures)
    convolution1dLayer(filterSize,numFilters1,Padding="same")
    reluLayer
    convolution1dLayer(filterSize,numFilters1,Padding="same")
    reluLayer
    globalAveragePooling1dLayer
    fullyConnectedLayer(numClasses)
    softmaxLayer
    classificationLayer( ...
    'Classes',classes, ...
    'ClassWeights',classWeights)];
If I include the globalAveragePooling1dLayer after my second relu layer than i get the following error:
" Error using trainNetwork (line 184) Invalid training data. For image, sequence-to-label, and feature classification tasks, responses must be categorical" .
Without the globalAveragePooling1dLayer I don't get the error and trainings starts. What is the problem? 
0 Comments
Accepted Answer
  Tomaso Cetto
    
 on 18 Jan 2022
        
      Edited: Tomaso Cetto
    
 on 18 Jan 2022
  
      Hi Bram!
As you've noticed, the globalAveragePooling1dLayer plays a critical role here. This is because that layer removes the time dimension by pooling over it globally (i.e. keeping only the largest value in the sequence). This layer is useful for sequence-to-one tasks, where the output isn't a sequence. The output here would be a numClasses x numObservations array.
However, because yours is a sequence-to-sequence problem, you want the output to be a numClasses x numObservations x sequenceLength array (with the sequence dimension conserved). So in that case, the globalAveragePooling1dLayer isn't appropriate for your workflow, because of the fact it removes the sequence dimension.
Hope this helps, and let me know if you have any other questions!
Best,
Tomaso
More Answers (1)
  yanqi liu
      
 on 17 Jan 2022
        yes,sir,may be check Ydata,such as use
Ydata2 = categorical(Ydata);
to get categorical vector,then train 
See Also
Categories
				Find more on Tuning in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

