Pass-through layer that adds a KL divergence penalty to the model loss
layer_kl_divergence_add_loss(
object,
distribution_b,
use_exact_kl = FALSE,
test_points_reduce_axis = NULL,
test_points_fn = tf$convert_to_tensor,
weight = NULL,
...
)
a Keras layer
What to compose the new Layer
instance with. Typically a
Sequential model or a Tensor (e.g., as returned by layer_input()
).
The return value depends on object
. If object
is:
missing or NULL
, the Layer
instance is returned.
a Sequential
model, the model with an additional layer is returned.
a Tensor, the output tensor from layer_instance(object)
is returned.
Distribution instance corresponding to b as in KL[a, b]
.
The previous layer's output is presumed to be a Distribution instance and is a.
Logical indicating if KL divergence should be
calculated exactly via tfp$distributions$kl_divergence
or via Monte Carlo approximation.
Default value: FALSE.
Integer vector or scalar representing dimensions over which to reduce_mean while calculating the Monte Carlo approximation of the KL divergence. As is with all tf$reduce_* ops, NULL means reduce over all dimensions; () means reduce over none of them. Default value: () (i.e., no reduction).
A callable taking a tfp$distributions$Distribution
instance and returning a tensor
used for random test points to approximate the KL divergence.
Default value: tf$convert_to_tensor.
Multiplier applied to the calculated KL divergence for each Keras batch member. Default value: NULL (i.e., do not weight each batch member).
Additional arguments passed to args
of keras::create_layer
.
For an example how to use in a Keras model, see layer_independent_normal()
.
Other distribution_layers:
layer_categorical_mixture_of_one_hot_categorical()
,
layer_distribution_lambda()
,
layer_independent_bernoulli()
,
layer_independent_logistic()
,
layer_independent_normal()
,
layer_independent_poisson()
,
layer_kl_divergence_regularizer()
,
layer_mixture_logistic()
,
layer_mixture_normal()
,
layer_mixture_same_family()
,
layer_multivariate_normal_tri_l()
,
layer_one_hot_categorical()