Я хочу нарисовать категориальные векторы, где их априор является произведением распределений Дирихле. Категории фиксированы, и каждый элемент в категориальном векторе соответствует другому априору Дирихле. Вот категориальный вектор длины 33 с 4 категориями, настроенный с помощью априорной Дирихле.
import pymc3 as pm
with pm.Model() as model3:
theta = pm.Dirichlet(name='theta',a=np.ones((33,4)), shape=(33,4))
seq = [pm.Categorical(name='seq_{}'.format(str(i)), p=theta[i,:], shape=(1,)) for i in range(33)]
step1 = pm.Metropolis(vars=[theta])
step2 = [pm.CategoricalGibbsMetropolis(vars=[i]) for i in seq]
trace = pm.sample(50, step=[step1] + [i for i in step2])
Однако этот подход громоздкий, так как мне нужно выполнить некоторую индексацию массива, чтобы получить категориальные векторы. Есть ли лучшие способы сделать это?