SKRockIterator#

class deepinv.sampling.SKRockIterator(algo_params, clip=None)[source]#

Bases: SamplingIterator

Single iteration of the SK-ROCK (Stabilized Runge-Kutta-Chebyshev) Algorithm.

Obtains samples of the posterior distribution using an orthogonal Runge-Kutta-Chebyshev stochastic approximation to accelerate the standard Unadjusted Langevin Algorithm.

The algorithm was introduced in Pereyra et al.[1].

  • SKROCK assumes that the denoiser is \(L\)-Lipschitz differentiable

  • For convergence, SKROCK requires that step_size smaller than \(\frac{1}{L+\|A\|_2^2}\)

Parameters:
  • clip (tuple(int,int)) – Tuple of (min, max) values to clip/project the samples into a bounded range during sampling. Useful for images where pixel values should stay within a specific range (e.g., (0,1) or (0,255)). Default: None

  • algo_params (dict) – Dictionary containing the algorithm parameters (see table below)

Parameter

Type

Description

step_size

float

Step size of the algorithm (default: 1.0). Tip: use physics.lipschitz to compute the Lipschitz constant

alpha

float

Regularization parameter \(\alpha\) (default: 1.0)

inner_iter

int

Number of internal iterations (default: 10)

eta

float

Damping parameter \(\eta\) (default: 0.05)

sigma

float

Noise level for the score prior denoiser (default: 0.05). A larger value of sigma will result in a more regularized reconstruction


References:

forward(X, y, physics, cur_data_fidelity, cur_prior, iteration, *args, **kwargs)[source]#

Performs a single SK-ROCK sampling step.

Parameters:
  • X (Dict) – Dictionary containing the current state \(x_t\).

  • y (torch.Tensor) – Observed measurements/data tensor

  • physics (Physics) – Forward operator

  • cur_data_fidelity (DataFidelity) – Negative log-likelihood function

  • cur_prior (ScorePrior) – Prior

Returns:

Dictionary {"x": x} containing the next state \(x_{t+1}\) in the Markov chain.

Return type:

Dict