Open fedeotto opened 1 month ago
Hi, This issue is similar to #7. You can see the discussions there for more details.
Apologies for the oversight!. By reading the answer provided in #7 , I still have some perplexities about the step_size
definition of the corrector, as it is stated that $\sigma_{t-1}$ is utilized, but in the code what I see is the following:
# Corrector
rand_l = torch.randn_like(l_T) if t > 1 else torch.zeros_like(l_T)
rand_t = torch.randn_like(t_T) if t > 1 else torch.zeros_like(t_T)
rand_x = torch.randn_like(x_T) if t > 1 else torch.zeros_like(x_T)
step_size = step_lr * (sigma_x / self.sigma_scheduler.sigma_begin) ** 2
std_x = torch.sqrt(2 * step_size)
and sigma_x
is defined above by sigma_x = self.sigma_scheduler.sigmas[t]
so I don't see where $\sigma_{t-1}$ is used for the corrector .. (?)
I have a small perplexity about the sampling described in DiffCSP (looking specifically at
diffusion_w_type.py
). I'm not sure that I'm interpreting it right, but Looking at the DiffCSP paper and the code simultaneously, I seem to understand that the roles of predictor and corrector are reversed (?) Below the specific block of code under examination:It seems to me that
x_t_minus_05
is retrieved via Langevin Dynamics (that should play the role of predictor here (?)) and the finalx_t_minus_1
is computed via the iteration rule involvingadjacent_sigma_x
. This doesn’t seem in line with the original paper from Song et Al., so I was just wondering whether it is a deliberate choice to exchange the role of predictor and corrector?