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 toNone
.
- forward(x, y, physics, sigma, *args, **kwargs)[source]#
Returns the loss term \(\distance{\forw{\denoiser{\sigma}{x}}}{y}\).
- Parameters:
x (torch.Tensor) – input image
y (torch.Tensor) – measurements
physics (deepinv.physics.Physics) – forward operator
sigma (float) – standard deviation of the noise.
- Returns:
(torch.Tensor) loss term.
- Return type:
- grad(x, y, physics, sigma, *args, **kwargs)[source]#
- Parameters:
x (torch.Tensor) – Current iterate.
y (torch.Tensor) – Input data.
physics (deepinv.physics.Physics) – physics model
sigma (float) – Standard deviation of the noise.
- Returns:
(
torch.Tensor
) score term.- Return type:
Examples using DPSDataFidelity
:#

Building your diffusion posterior sampling method using SDEs