# Codeblock 5b def forward(self, x, t): #(1) print(f'images\t\t\t: {x.size()}') print(f'timesteps\t\t: {t.size()}, {t}') x = self.conv_0(x) #(2) x = self.bn_0(x) #(3) x = self.relu(x) #(4) print(f'\nafter first conv\t: {x.size()}') time_embed = self.time_embedding()[t] #(5) print(f'\ntime_embed\t\t: {time_embed.size()}') time_embed = self.linear(time_embed) #(6) print(f'time_embed after linear\t: {time_embed.size()}') time_embed = time_embed[:, :, None, None] #(7) print(f'time_embed expanded\t: {time_embed.size()}') x = x + time_embed #(8) print(f'\nafter summation\t\t: {x.size()}') x = self.conv_1(x) #(9) x = self.bn_1(x) #(10) x = self.relu(x) #(11) print(f'after second conv\t: {x.size()}') return x