# Codeblock 9 class Encoder(nn.Module): def __init__(self): super().__init__() self.patcher = Patcher() #(1) self.learnable_embedding = LearnableEmbedding() #(2) #(3) self.encoder_blocks = nn.ModuleList(EncoderBlock() for _ in range(NUM_ENCODER_BLOCKS)) def forward(self, images): #(4) print(f'images\t\t\t: {images.size()}') features = self.patcher(images) #(5) print(f'after patcher\t\t: {features.size()}') features = features + self.learnable_embedding() #(6) print(f'after learn embed\t: {features.size()}') for i, encoder_block in enumerate(self.encoder_blocks): features = encoder_block(features) #(7) print(f"after encoder block #{i}\t: {features.shape}") return features