Усеченная многомерная нормаль в TensorFlow - PullRequest
0 голосов
/ 22 февраля 2020

Мне интересно вычислить pdf усеченной многомерной нормали с нулевыми недиагональными элементами ковариационной матрицы. В некоторой степени это возможно при использовании tensorflow_probability.distributions.TruncatedNormal:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import tensorflow_probability as tfp
import tensorflow as tf
sess = tf.Session()


#Create grid and multivariate normal
x = np.linspace(-0.25,1.25,30)
y = np.linspace(-0.25,1.25,30)
X, Y = np.meshgrid(x,y)

dist = tfp.distributions.TruncatedNormal(loc=[0.5], scale=np.sqrt(5),low=[0],high=[1])
a = tf.reshape( dist.prob(x), [30,1])
b = tf.reshape( dist.prob(y), [1,30])
z1 = tf.matmul(a,b).eval(session=sess)

fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_surface(X, Y, z1 ,cmap='viridis',linewidth=0)

Усеченный многомерный гауссов похож на куб с квадратным основанием.

enter image description here

Есть ли способ обрезать гауссиан таким образом, чтобы основание было эллипсом / кругом?

...