BurgEntropy#
- class deepinv.optim.BurgEntropy[source]#
Bases:
Bregman
Module for the using Burg’s entropy as Bregman potential \(\phi(x) = - \sum_i \log x_i\).
The corresponding Bregman divergence is the Itakura-Saito distance \(D(x,y) = \sum_i x_i / y_i - \log(x_i / y_i) - 1\). As shown in https://publications.ut-capitole.fr/id/eprint/25852/1/25852.pdf, it is the Bregman potential to use for performing mirror descent on the Poisson likelihood
deepinv.optim.data_fidelity.PoissonLikelihood
.- conjugate(x)[source]#
Computes the convex conjugate potential \(\phi^*(y) = - - \sum_i \log (-x_i)\). The input \(x\) must be negative.
- Parameters:
x (torch.Tensor) – Variable \(x\) at which the conjugate is computed.
- Returns:
(torch.tensor) conjugate potential \(\phi^*(y)\).
- fn(x)[source]#
Computes Burg’s entropy potential \(\phi(x) = - \sum_i \log x_i\). The input \(x\) must be postive.
- Parameters:
x (torch.Tensor) – Variable \(x\) at which the potential is computed.
- Returns:
(torch.tensor) potential \(h(x)\).
- grad(x, *args, **kwargs)[source]#
Calculates the gradient of Burg’s entropy \(\nabla \phi(x) = - 1 / x\).
- Parameters:
x (torch.Tensor) – Variable \(x\) at which the gradient is computed.
- Returns:
(torch.tensor) gradient \(\nabla_x \phi\), computed in \(x\).
- grad_conj(x, *args, **kwargs)[source]#
Calculates the gradient of the conjugate of Burg’s entropy \(\nabla h^*(x) = - 1 / x\).
- Parameters:
x (torch.Tensor) – Variable \(x\) at which the gradient is computed.
- Returns:
(torch.tensor) gradient \(\nabla_x h^*\), computed in \(x\).
Examples using BurgEntropy
:#
Plug-and-Play algorithm with Mirror Descent for Poisson noise inverse problems.