Как указано в моем комментарии, исправление здесь заключается в использовании sample_shape=[100,]
вместо sample_shape=[100, 5]
.У нас есть три понятия формы в библиотеке распределений TF (которую Эдвард переносит): форма образца, форма пакета и форма события.
Форма события описывает форму одиночного рисования из распределения.Например, многомерное нормальное распределение в 5 измерениях имеет event_shape=[5,]
Форма пакета описывает независимые, не идентично распределенные тиражи;«партия» распределений.Например, Normal(loc=[1., 2., 3], scale=1.)
имеет batch_shape 3 из-за 3 значений, переданных параметру loc
.
Образец формы описывает IID-отрисовки из партии распределений.Результирующая выборка Tensor
имеет форму S + B + E
, где S
, B
и E
- это формы выборки, партии и события соответственно.
В вашем примере DirichletMultinomial имеетпараметр концентрации с формой [5,]
.Это соответствует форме события в распределении: каждый розыгрыш из этого распределения будет набором из 5 целых чисел, суммирующим до total_count
.Когда вы выбираете распределение 100 раз, вы действительно получаете результат с shape=[100, 5]
, но 5 неявно присутствует в форме события распределения - вы рисуете только 100 выборок, следовательно, sample_shape=[100,]
Большая часть вышеприведенного текста взята из этого замечательного блокнота , в котором гораздо больше деталей о формах TF Distribution.
Надеюсь, это поможет прояснить ситуацию!Удачной выборки!^ _ ^