tfp.vi.dual_csiszar_function

Calculates the dual Csiszar-function in log-space.

A Csiszar-function is a member of,

F = { f:R_+ to R : f convex }.

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)

logu float-like Tensor representing log(u) from above.
csiszar_function Python callable representing a Csiszar-function over log-domain.
name Python str name prefixed to Ops created by this function.

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