Tensorflow Внедрить многомерное диагональное распределение Стьюдента Т
Я реализую диагональное многопараметрическое распределение студентов 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)
Я не уверен, как исправить эту ошибку; может кто-нибудь мне поможет?
0 ответов
TensorFlow Probability предоставляет способ создания векторно-значных распределений из скалярных распределений с помощью мета-распределения tfd.Independent. Это будет автоматически выполнять суммирование в log_prob
что ты хочешь.
Если вы действительно хотите реализовать что-то самостоятельно, проблема, с которой вы столкнулись, звучит так, как будто вы не перекрыли event_shape
а также event_shape_tensor
методы (наряду с batch_shape
а также batch_shape_tensor
).
И наконец, обычно, когда люди говорят о многомерном распределении Стьюдента, они имеют в виду описанное здесь эллиптическое распределение, которое не то же самое, что взять произведение распределений 1D Стьюдента и затем их линейно преобразовать. Недавно TFP добавил реализацию эллиптического варианта этого распределения здесь. В качестве входных данных используется аффинное преобразование, которое можно использовать для настройки структуры местоположения / корреляции распределения.