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