tfp.substrates.numpy.vi.dual_csiszar_function
bookmark_border bookmark
Stay organized with collections
Save and categorize content based on your preferences.
Calculates the dual Csiszar-function in log-space.
View aliases
Main aliases
tfp.experimental.substrates.numpy.vi.dual_csiszar_function
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)
Warning: this function makes non-log-space calculations and may therefore be
numerically unstable for |logu| >> 0
.
Args
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.
Returns
dual_f_of_u
float
-like Tensor
of the result of calculating the dual of
f
at u = exp(logu)
.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License , and code samples are licensed under the Apache 2.0 License . For details, see the Google Developers Site Policies . Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2023-11-21 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2023-11-21 UTC."],[],[]]