vi_dual_csiszar_function: Calculates the dual Csiszar-function in log-space

View source: R/vi-functions.R

vi_dual_csiszar_functionR Documentation

Calculates the dual Csiszar-function in log-space

Description

A Csiszar-function is a member of F = { f:R_+ to R : f convex }.

Usage

vi_dual_csiszar_function(logu, csiszar_function, name = NULL)

Arguments

logu

float-like Tensor representing log(u) from above.

csiszar_function

function representing a Csiszar-function over log-domain.

name

name prefixed to Ops created by this function.

Details

The Csiszar-dual is defined as:

f^*(u) = u f(1 / u)

where f is some other Csiszar-function. For example, the dual of kl_reverse is kl_forward, i.e.,

f(u) = -log(u)
f^*(u) = u f(1 / u) = -u log(1 / u) = u log(u)

The dual of the dual is the original function:

f^**(u) = {u f(1/u)}^*(u) = u (1/u) f(1/(1/u)) = f(u)

Warning: this function makes non-log-space calculations and may therefore be numerically unstable for |logu| >> 0.

Value

dual_f_of_u float-like Tensor of the result of calculating the dual of f at u = exp(logu).

See Also

Other vi-functions: vi_amari_alpha(), vi_arithmetic_geometric(), vi_chi_square(), vi_csiszar_vimco(), vi_fit_surrogate_posterior(), vi_jeffreys(), vi_jensen_shannon(), vi_kl_forward(), vi_kl_reverse(), vi_log1p_abs(), vi_modified_gan(), vi_monte_carlo_variational_loss(), vi_pearson(), vi_squared_hellinger(), vi_symmetrized_csiszar_function()


tfprobability documentation built on Sept. 1, 2022, 5:07 p.m.