<p>Youre not doing anything wrong. The CDF is not implemented for the Multivariate Normal. (I agree the error message is confusing. The error message is being thrown by <code>TransformedDistribution</code> which is responsible for implementing the <code>cdf</code>.)</p>

<p>If you can tolerate a Monte Carlo approximation, I suggest doing something like:</p>

<pre><code>def approx_multivariate_cdf(dist, bound, num_samples=int(100e3), seed=None):
  s = dist.sample(num_samples, seed=seed)
  in_box = tf.cast(tf.reduce_all(s &lt;= bound, axis=-1), dist.dtype)
  return tf.reduce_mean(in_box, axis=0)
</code></pre>

<p>(With some thought, I'm sure someone can do better than this.)</p>

<p>There might also be a more clever solution described here: <a href="https://arxiv.org/abs/1603.04166" rel="nofollow noreferrer">https://arxiv.org/abs/1603.04166</a></p>
CDF of a multivariate Normal in Tensorflow
<p>I want to evaluate the cdf of a multivariate normal distribution using tensorflow. What I have tried so far:</p>

<pre><code>import tensorflow as tf
ds = tf.contrib.distributions

# Initialize a single 3-variate Gaussian.
mu = [0., 0., 0.]
cov = [[ 0.36,  0.12,  0.06],
       [ 0.12,  0.29, -0.13],
       [ 0.06, -0.13,  0.26]]
mvn = ds.MultivariateNormalFullCovariance(
    loc=mu,
    covariance_matrix=cov)
value = tf.constant([0., 0., 0.])


with tf.Session() as sess:
    print mvn.cdf(value).eval()
</code></pre>

<p>This yields the error:</p>

<pre><code>NotImplementedError: cdf is not implemented when overriding event_shape
</code></pre>

<p>I don't understand why I am overriding the event_shape since event_shape and the shape of value are the same. What am I doing wrong?</p>