proximal_l1

odl.solvers.nonsmooth.proximal_operators.proximal_l1(space, lam=1, g=None)[source]

Proximal operator factory of the L1 norm/distance.

Implements the proximal operator of the functional

F(x) = lam ||x - g||_1

with x and g elements in space, and scaling factor lam.

Parameters:
spaceLinearSpace or ProductSpace

Domain of the functional.

lampositive float, optional

Scaling factor or regularization parameter.

gspace element, optional

Element to which the L1 distance is taken. Default: space.zero.

Returns:
prox_factoryfunction

Factory for the proximal operator to be initialized

See also

proximal_convex_conj_l1

proximal for convex conjugate

proximal_l1_l2

isotropic variant of the group L1 norm proximal

Notes

For the functional

F(x) = \lambda \|x - g\|_1,

and a step size \sigma, the proximal operator of \sigma F is given as the "soft-shrinkage" operator

\mathrm{prox}_{\sigma F}(x) =
\begin{cases}
    g, & \text{where } |x - g| \leq \sigma\lambda, \\
    x - \sigma\lambda \mathrm{sign}(x - g), & \text{elsewhere.}
\end{cases}

Here, all operations are to be read pointwise.

For vector-valued x and g, the (non-isotropic) proximal operator is the component-wise scalar proximal:

\mathrm{prox}_{\sigma F}(x) = \left(
    \mathrm{prox}_{\sigma F}(x_1), \dots,
    \mathrm{prox}_{\sigma F}(x_d)
    \right),

where d is the number of components of x.