def METHOD_NAME(self, x, noise=None):
    activations = []
    for t in self.steps:
        # Compute x_t and run DDPM
        t = torch.tensor([t]).to(x.device)
        noisy_x = self.diffusion.q_sample(x, t, noise=noise)
        self.model(noisy_x, self.diffusion._scale_timesteps(t))
        # Extract activations
        for block in self.feature_blocks:
            activations.append(block.activations)
            block.activations = None
    # Per-layer list of activations [N, C, H, W]
    return activations