def __init__(self, inplanes, planes, stride=1, downsample=None):
    super(Bottleneck, self).__init__()
    self.conv1 = nn.Conv2d(inplanes, planes, kernel_size=1, bias=False)
    self.bn1 = nn.BatchNorm2d(planes)
    self.conv2 = nn.Conv2d(planes, planes, kernel_size=3, stride=stride, padding=1, bias=False)
    self.bn2 = nn.BatchNorm2d(planes)
    self.conv3 = nn.Conv2d(planes, (planes * 4), kernel_size=1, bias=False)
    self.bn3 = nn.BatchNorm2d((planes * 4))
    self.relu = nn.ReLU(inplace=True)
    self.ca = ChannelAttention((planes * 4))
    self.sa = SpatialAttention()
    self.downsample = downsample
    self.stride = stride
def __init__(self, inplanes, planes, stride=1, downsample=None):
    super(Bottleneck, self).__init__()
    self.conv1 = nn.Conv2d(inplanes, planes, kernel_size=1, bias=False)
    self.bn1 = nn.BatchNorm2d(planes)
    self.conv2 = nn.Conv2d(planes, planes, kernel_size=3, stride=stride, padding=1, bias=False)
    self.bn2 = nn.BatchNorm2d(planes)
    self.conv3 = nn.Conv2d(planes, (planes * 4), kernel_size=1, bias=False)
    self.bn3 = nn.BatchNorm2d((planes * 4))
    self.relu = nn.ReLU(inplace=True)
    self.ca = ChannelAttention((planes * 4))
    self.sa = SpatialAttention()
    self.downsample = downsample
    self.stride = stride