How to share a fully connected layer and is it possible to use a channel direction pooling?

10 views (last 30 days)
(한국어로 답변주실 수 있다면 한국어로 답변 부탁드립니다.)
I am currently designing a model using the Deep Network Designer to implement a Convolutional Block Attention Module (CBAM).
For this, I need to use a channel-wise max/average pooling layer, and I am wondering if there is a way to implement this within MATLAB.
Additionally, I would like to know if there is a method to share a fully connected layer across different parts of the network. The current implementation of the fully connected layer seems to be limited to a single input and output.
Lastly, when passing through the fully connected layer, the dimension of the output is converted to (C x B). Is there a way to reshape this back to (S x S x C x B) in order to perform element-wise multiplication?

Accepted Answer

Angelo Yeo
Angelo Yeo on 21 Aug 2024
CBAM은 MATLAB에서 구현되어 있지 않습니다만, 가장 간단한 방법 중 하나는 Pytorch로 구현된 모델을 MATLAB에 불러와 사용하는 것입니다. 가령, 아래의 Repo에 들어있는 CBAM 모델을 pt 파일로 저장한 뒤에 MATLAB으로 가져와 사용할 수 있습니다.
Pytorch 모델을 MATLAB으로 가져올 때 아래와 같은 기능을 활용할 수 있습니다.
모델을 가져와보면 Adaptive Maxpooling 레이어는 MATLAB에서 내장함수로 구현된 것이 없기 때문에 이 레이어에 대해서만 custom으로 만들어주시면 CBAM 전체 모델을 사용할 수 있습니다.

More Answers (0)

Categories

Find more on Image Data Workflows in Help Center and File Exchange

Products


Release

R2024a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!