# Codeblock 19b def forward(self, features, captions, attn_mask): #(1) print(f"features\t\t: {features.shape}") print(f"captions\t\t: {captions.shape}") captions = self.embedding(captions) #(2) print(f"after embedding\t\t: {captions.shape}") captions = captions + self.sinusoidal_embedding() #(3) print(f"after sin embed\t\t: {captions.shape}") for i, decoder_block in enumerate(self.decoder_blocks): captions = decoder_block(features, captions, attn_mask) #(4) print(f"after decoder block #{i}\t: {captions.shape}") captions = self.linear(captions) #(5) print(f"after linear\t\t: {captions.shape}") return captions