BurgEntropy

class deepinv.optim.bregman.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\).