# Codeblock 8b def generate(self, images): #(1) features = self.encoder(images) #(2) print(f"after encodertt: {features.shape}n") words = [] #(3) for i in range(SEQ_LENGTH): #(4) print(f"iteration #{i}") features = features.unsqueeze(1) print(f"after unsqueezett: {features.shape}") features, _ = self.decoder.lstm(features) print(f"after lstmtt: {features.shape}") features = features.squeeze(1) #(5) print(f"after squeezett: {features.shape}") probs = self.decoder.linear(features) #(6) print(f"after lineartt: {probs.shape}") _, word = probs.max(dim=1) #(7) print(f"after maxtt: {word.shape}") words.append(word.item()) #(8) if word == 1: #(9) break features = self.decoder.embedding(word) #(10) print(f"after embeddingtt: {features.shape}n") return words #(11)