### `tf.contrib.bayesflow.monte_carlo.expectation(f, p, z=None, n=None, seed=None, name='expectation')` {#expectation} Monte Carlo estimate of an expectation: `E_p[f(Z)]` with sample mean. This `Op` returns ``` n^{-1} sum_{i=1}^n f(z_i), where z_i ~ p \approx E_p[f(Z)] ``` User supplies either `Tensor` of samples `z`, or number of samples to draw `n` ##### Args: * `f`: Callable mapping samples from `p` to `Tensors`. * `p`: `tf.contrib.distributions.Distribution`. * `z`: `Tensor` of samples from `p`, produced by `p.sample_n`. * `n`: Integer `Tensor`. Number of samples to generate if `z` is not provided. * `seed`: Python integer to seed the random number generator. * `name`: A name to give this `Op`. ##### Returns: A `Tensor` with the same `dtype` as `p`. * `Example`: ```python N_samples = 10000 distributions = tf.contrib.distributions dist = distributions.Uniform([0.0, 0.0], [1.0, 2.0]) elementwise_mean = lambda x: x mean_sum = lambda x: tf.reduce_sum(x, 1) estimate_elementwise_mean_tf = monte_carlo.expectation(elementwise_mean, dist, n=N_samples) estimate_mean_sum_tf = monte_carlo.expectation(mean_sum, dist, n=N_samples) with tf.Session() as sess: estimate_elementwise_mean, estimate_mean_sum = ( sess.run([estimate_elementwise_mean_tf, estimate_mean_sum_tf])) print estimate_elementwise_mean >>> np.array([ 0.50018013 1.00097895], dtype=np.float32) print estimate_mean_sum >>> 1.49571 ```