Я реализую диагональное многомерное распределение студентов t (так что logP (x1, x2, x3, .. xD) = logP (x1) + logP (x2) + .... + logP (xD)), так чтоон может использоваться как базовое распределение для биекторов в TensorFlow
import tensorflow_probability as tfp
tfd = tfp.distributions
D = 2 # number of dimension
df = 5. # degree of freedom
# construct D univariate student t distribution
base_dist = tfd.StudentT(loc=tf.constant([0.] * D,dtype=DTYPE),
scale = tf.constant([1.] * D,dtype=DTYPE),
df = tf.constant([df],dtype=DTYPE))
Q = tfd.TransformedDistribution(distribution=base_dist,bijector=Chain)
# where Chain is a tfb.Chain() object that a sequence of bisector numbers
Я изменяю tfd.StudentT.log_prob()
так, чтобы он суммировался по последним осям.Он принимает форму [batch_size,dim]
в качестве ввода и возвращает pdf с формой [batch_size,]
Однако, когда я звоню Q.log_prob(x)
;Я получил ошибку ValueError: event_ndims (0) must be larger than min_event_ndims (1)
Я не уверен, как исправить эту ошибку;может кто-нибудь мне поможет?