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.