CQTdiff icon indicating copy to clipboard operation
CQTdiff copied to clipboard

reconstruction guidance mismatch with the paper

Open XZWY opened this issue 1 year ago • 3 comments

norm=torch.linalg.norm(y-den_rec,dim=dim,` ord=2)
rec_grads=torch.autograd.grad(outputs=norm, inputs=x)

rec_grads=rec_grads[0]

normguide=torch.linalg.norm(rec_grads)/x.shape[-1]**0.5

#normalize scaling
s=self.xi/(normguide*t_i+1e-6)

#optionally apply a treshold to the gradients
if self.treshold_on_grads>0:
    #pply tresholding to the gradients. It is a dirty trick but helps avoiding bad artifacts 
    rec_grads=torch.clip(rec_grads, min=-self.treshold_on_grads, max=self.treshold_on_grads)


score=(x_hat.detach()-x)/t_i**2

Inside the sampler, the norm guide and error norm are all normalized, but they should all be the power of the error and the gradient, which seems to be mismatching the paper. Is this on purpose?

XZWY avatar Oct 19 '24 06:10 XZWY

Hi, I'm not sure I understand the issue. Do you mean that the norm should be squared? If so, note that after normalizing the gradients with the gradient norm, both using the squared and not squared norm gives equivalent normalized gradients.

eloimoliner avatar Oct 19 '24 07:10 eloimoliner

I see, thanks! then I assume in the paper it also should be normalizing by the gradient norm $$||G||_2$$ instead of the squared norm $$||G||_2^2$$ right? As in the image below Screenshot 2024-10-19 120721

XZWY avatar Oct 19 '24 15:10 XZWY

Oh yes, you are right. That looks like a typo.

eloimoliner avatar Oct 20 '24 08:10 eloimoliner