How to flatten the output of convolution1dLayer
6 次查看(过去 30 天)
显示 更早的评论
Hello!
As listed below, I changed the global average pooling layer to a simple flatten layer using the function layer.
layers = [ ...
sequenceInputLayer(numFeatures)
convolution1dLayer(filterSize,numFilters,Padding="causal")
reluLayer
layerNormalizationLayer
convolution1dLayer(filterSize,2*numFilters,Padding="causal")
reluLayer
layerNormalizationLayer
functionLayer(@(X) dlarray(X(:),"CB"),Formattable=true,Description="My flatten") %globalAveragePooling1dLayer
fullyConnectedLayer(numClasses)
softmaxLayer
classificationLayer];
"analyzeNetwork(layers)" had no error, but training failed.
Error "Incorrect dimensions for matrix multiplication" was poped in trainNetwork process.
I want to evaluate and compare traditional flatten like Keras flatten() to global pooling.
Is there any good way for this work?
0 个评论
采纳的回答
Abolfazl Chaman Motlagh
2022-6-26
by X(:) you are reshaping x to Nx1 vector, but you chose "CB" format for the array which is going to assume the array is 2 dimensional.( and it should be) try using size and reshape.
if the previous format is "CTB" then two first dimension should merge into one dimension. so do this:
functionLayer(@(X) dlarray(reshape(X,[size(X,1)*size(X,2),size(X,3)]),"CB"),Formattable=true,Description="My flatten")
if it's not, format your data to be in this order because it is much harder task to merger non consecutive dimensions.
in creating costum layers and networks you will face a lot of errors like this for adaptation of new layer. so you may still have some troubles i guess:)
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Image Data Workflows 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!