tf.contrib.bayesflow.stochastic_tensor.StochasticTensor.__init__(dist_cls, name=None, dist_value_type=None, loss_fn=score_function, **dist_args)
Construct a StochasticTensor.
StochasticTensor will instantiate a distribution from dist_cls and dist_args and its value method will return the same value each time it is called. What value is returned is controlled by the dist_value_type (defaults to SampleAndReshapeValue).
Some distributions' sample functions are not differentiable (e.g. a sample from a discrete distribution like a Bernoulli) and so to differentiate wrt parameters upstream of the sample requires a gradient estimator like the score function estimator. This is accomplished by passing a differentiable loss_fn to the StochasticTensor, which defaults to a function whose derivative is the score function estimator. Calling stochastic_graph.surrogate_loss(final_losses) will call loss() on every StochasticTensor upstream of final losses.
loss() will return None for StochasticTensors backed by reparameterized distributions; it will also return None if the value type is MeanValueType or if loss_fn=None.
Args:
-
dist_cls: aDistributionclass. -
name: a name for thisStochasticTensorand its ops. -
dist_value_type: a_StochasticValueType, which will determine what thevalueof thisStochasticTensorwill be. If not provided, the value type set with thevalue_typecontext manager will be used. -
loss_fn: callable that takes(dt, dt.value(), influenced_loss), wheredtis thisStochasticTensor, and returns aTensorloss. By default,loss_fnis thescore_function, or more precisely, the integral of the score function, such that when the gradient is taken, the score function results. See thestochastic_gradient_estimatorsmodule for additional loss functions and baselines. -
**dist_args: keyword arguments to be passed through todist_clson construction.
Raises:
-
TypeError: ifdist_clsis not aDistribution. -
TypeError: ifloss_fnis notcallable.
Please login to continue.