View source on GitHub |
Calculates the dual Csiszar-function in log-space.
tfp.substrates.numpy.vi.dual_csiszar_function(
logu, csiszar_function, name=None
)
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)
Returns | |
---|---|
dual_f_of_u
|
float -like Tensor of the result of calculating the dual of
f at u = exp(logu) .
|