bartorch.prox.frozen

Contents

bartorch.prox.frozen#

bartorch.prox.frozen(term)#

term, with its proximal operator a constant in a differentiated solve.

BART’s proximal operators carry no derivative, so Regularizer.prox() refuses a tensor that is being differentiated rather than quietly contributing a wrong gradient – soft thresholding is not the constant map, and treating it as one zeroes the whole path through the prior. This is how to say that the refusal is not what you want: the term thresholds as it always did, and the gradient is the one the iteration has with this term held fixed.

What it is for is the mixed solve – a denoiser in one slot and a term of BART’s own in another – where the gradient is meant to reach the denoiser and the other term is furniture.

Examples

>>> optim.admm(y, A, [denoiser, prox.frozen(prox.Wavelet((-1, -2), 0.01))])