# Codeblock 2 class Convolutional(nn.Module): def __init__(self, in_channels, out_channels, kernel_size, stride=1): super().__init__() self.conv = nn.Conv2d(in_channels=in_channels, out_channels=out_channels, kernel_size=kernel_size, stride=stride, bias=False, #(1) padding=1 if kernel_size==3 else 0) #(2) self.bn = nn.BatchNorm2d(num_features=out_channels) self.leaky_relu = nn.LeakyReLU(negative_slope=0.1) def forward(self, x): #(3) print(f'original\t: {x.size()}') x = self.conv(x) print(f'after conv\t: {x.size()}') x = self.bn(x) print(f'after bn\t: {x.size()}') x = self.leaky_relu(x) print(f'after leaky relu: {x.size()}') return x