# Codeblock 12b def forward(self, x): print(f'original\t\t: {x.size()}') x = self.first_conv(x) print(f'after first_conv\t: {x.size()}') for i, block in enumerate(self.blocks): x = block(x) print(f"after bottleneck #{i}\t: {x.shape}") x = self.second_conv(x) print(f'after second_conv\t: {x.size()}') x = self.avgpool(x) print(f'after avgpool\t\t: {x.size()}') x = self.third_conv(x) print(f'after third_conv\t: {x.size()}') x = self.dropout(x) print(f'after dropout\t\t: {x.size()}') x = self.output(x) print(f'after output\t\t: {x.size()}') x = torch.flatten(x, start_dim=1) print(f'after flatten\t\t: {x.size()}') return x