MoreauEnvelope
- class odl.functionals.default_functionals.MoreauEnvelope(*args, **kwargs)[source]
Bases:
FunctionalMoreau envelope of a convex functional.
The Moreau envelope is a way to smooth an arbitrary convex functional such that its gradient can be computed given the proximal of the original functional. The new functional has the same critical points as the original. It is also called the Moreau-Yosida regularization.
Note that the only computable property of the Moreau envelope is the gradient, the functional itself cannot be evaluated efficiently.
See Proximal Algorithms for more information.
Notes
The Moreau envelope of a convex functional
multiplied by a scalar
is defined by
The gradient of the envelope is given by
 =
\frac{1}{\sigma} (x - \mathrm{prox}_{\sigma f}(x))](../_images/math/4177de738b7bf705b4d725beba447ff63aced9ec.png)
Example: if
, then![[\mathrm{env}_{\sigma \| \cdot \|_1}(x)]_i =
\begin{cases}
\frac{1}{2 \sigma} x_i^2 & \text{if } |x_i| \leq \sigma \\
|x_i| - \frac{\sigma}{2} & \text{if } |x_i| > \sigma,
\end{cases}](../_images/math/9a7c42a643d2c1be874dfedadf844cb378229fb0.png)
which is the usual Huber functional.
References
- __init__(functional, sigma=1.0)[source]
Initialize an instance.
Parameters
- functional
Functional The functional
fin the definition of the Moreau envelope that is to be smoothed.- sigmapositive float, optional
The scalar
sigmain the definition of the Moreau envelope. Larger values mean stronger smoothing.
Examples
Create smoothed l1 norm:
>>> space = odl.rn(3) >>> l1_norm = odl.functionals.L1Norm(space) >>> smoothed_l1 = MoreauEnvelope(l1_norm)
- functional