# Codeblock 7a class Bottleneck(nn.Module): def __init__(self, in_channels, out_channels, kernel_size, stride, padding, exp_size, #(1) se, #(2) activation): super().__init__() self.add = in_channels == out_channels and stride == 1 #(3) self.conv0 = ConvBlock(in_channels=in_channels, #(4) out_channels=exp_size, #(5) kernel_size=1, #(6) stride=1, padding=0, activation=activation) self.conv1 = ConvBlock(in_channels=exp_size, #(7) out_channels=exp_size, #(8) kernel_size=kernel_size, #(9) stride=stride, padding=padding, groups=exp_size, #(10) activation=activation) self.semodule = SEModule(num_channels=exp_size, r=4) if se else nn.Identity() #(11) self.conv2 = ConvBlock(in_channels=exp_size, #(12) out_channels=out_channels, #(13) kernel_size=1, #(14) stride=1, padding=0, activation=nn.Identity()) #(15)