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

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.

See Also

proximal_convex_conj_l1 : proximal for convex conjugate proximal_l1_l2 : isotropic variant of the group L1 norm proximal