# Codeblock 3 class Patcher(nn.Module): def __init__(self): super().__init__() self.conv = nn.Conv2d(in_channels=IN_CHANNELS, #(1) out_channels=EMBED_DIM, kernel_size=PATCH_SIZE, #(2) stride=PATCH_SIZE) #(3) self.flatten = nn.Flatten(start_dim=2) #(4) def forward(self, x): print(f'original\t: {x.size()}') x = self.conv(x) #(5) print(f'after conv\t: {x.size()}') x = self.flatten(x) #(6) print(f'after flatten\t: {x.size()}') x = x.permute(0, 2, 1) #(7) print(f'after permute\t: {x.size()}') return x