bartorch.optim.Tikhonov

bartorch.optim.Tikhonov#

class bartorch.optim.Tikhonov(weight, operator=None, bias=None)#

A quadratic penalty weight * ||operator x - bias||^2.

What generalized Tikhonov regularization is, and what CG minimizes alongside the data term. Without an operator the penalty is on the image itself, and without a bias it is on its size rather than its distance from something.

Every combination is still a least-squares problem, so it is still conjugate gradients that solves it: the terms are stacked under the encoding and the normal operator is the sum of the terms’ own, which is what keeps a Toeplitz encoding’s normal the convolution it was.

Parameters:
  • weight (float) – The weight, not its square root. Must not be negative.

  • operator (LinearOperator, optional) – What the penalty is on, mapping the image somewhere. By default the image itself.

  • bias (tensor, optional) – What the penalty pulls towards, of the operator’s codomain shape. By default zero, which is the ordinary penalty on size.

Examples

Pull towards a prior image rather than towards zero:

>>> CG(terms=Tikhonov(0.1, bias=prior))(y, A)

Penalize the first differences, which is quadratic total variation:

>>> CG(terms=Tikhonov(0.1, operator=linop.Gradient(A.ishape)))(y, A)
__init__(weight, operator=None, bias=None)#

Methods

__init__(weight[, operator, bias])

Attributes

bias

operator

weight