Is this CBAM correct?
q1135718080 opened this issue · comments
q1135718080 commented
I try to implement CBAM with Pytorch, but I don't know if it's written correctly. Can you help me see it
Thank you very much.
class CAP(nn.Module):
def __init__(self, in_planes, ra):
super(CAP, self).__init__()
self.avg_pool = nn.AdaptiveAvgPool2d(1)
self.max_pool = nn.AdaptiveMaxPool2d(1)
self.fc1 = nn.Conv2d(in_planes, in_planes // ra, 1, bias=False)
self.relu1 = nn.ReLU()
self.fc2 = nn.Conv2d(in_planes // ra, in_planes, 1, bias=False)
self.sigmoid = nn.Sigmoid()
def forward(self, x):
avg_out = self.fc2(self.relu1(self.fc1(self.avg_pool(x))))
max_out = self.fc2(self.relu1(self.fc1(self.max_pool(x))))
out = avg_out + max_out
return self.sigmoid(out)
elif mdef['type'] == 'cap':
in_planes = mdef['filters']
ra = mdef['ratio']
modules = CAP(in_planes,ra)
######SAM######
[cap]
filters = 512
ratio = 16
[convolutional]
batch_normalize=1
size=1
stride=1
pad=1
filters=512
activation=logistic
[sam]
from=-2
######SAM######
q1135718080 commented
#######CBAM#######
[avgpool]
[convolutional]
filters=16
size=1
stride=1
activation=linear
[convolutional]
filters=256
size=1
stride=1
activation=linear
[route]
layers=-4
[maxpool]
[convolutional]
filters=16
size=1
stride=1
activation=linear
[convolutional]
filters=256
size=1
stride=1
activation=linear
[route]
layers=-1,-5
[Sigmoid]
[convolutional]
batch_normalize=1
size=1
stride=1
pad=1
filters=256
activation=logistic
[sam]
from=-2
#######CBAM#######
saesaria commented
Hi,
I got this Warning: Unrecognized Layer Type: Sigmoid
, how to add the Sigmoid layer? thanks.