DPSDataFidelity#

class deepinv.sampling.DPSDataFidelity(denoiser=None, clip=None, *args, **kwargs)[source]#

Bases: NoisyDataFidelity

The DPS data-fidelity term.

This corresponds to the \(p(y|x)\) prior as proposed in Diffusion Probabilistic Models.

Parameters:

denoiser (deepinv.models.Denoiser) – Denoiser network.

\[\begin{split}\begin{aligned} \nabla_x \log p_t(y|x) &= \nabla_x \frac{1}{2} \| \forw{\denoisername{x}} - y \|^2 \\ &= \left(\nabla_x \denoisername{x} \right)^\top A^\top \left(\forw{\denoisername{x}} - y\right) \end{aligned}\end{split}\]

where \(\sigma = \sigma(t)\) is the noise level.

Note

The preconditioning term is computed with automatic differentiation.

Parameters:
  • denoiser (deepinv.models.Denoiser) – Denoiser network

  • clip (bool) – Whether to clip the denoised output into [clip[0], clip[1]] interval. Default to None.

forward(x, y, physics, sigma, *args, **kwargs)[source]#

Returns the loss term \(\distance{\forw{\denoiser{\sigma}{x}}}{y}\).

Parameters:
Returns:

(torch.Tensor) loss term.

Return type:

Tensor

grad(x, y, physics, sigma, *args, **kwargs)[source]#
Parameters:
Returns:

(torch.Tensor) score term.

Return type:

Tensor

Examples using DPSDataFidelity:#

Building your diffusion posterior sampling method using SDEs

Building your diffusion posterior sampling method using SDEs