Простая тематическая модель PyMC3

Я пытаюсь реализовать очень простую модель темы в PyMC3, и у меня возникла проблема с получением ее в качестве примера. Я уверен, что проблема в функции 'p' в том, как я пытаюсь получить доступ к переменной 'theta'. Тета на самом деле не список, но я не знаю, как еще объединить эту информацию. Любая помощь будет принята с благодарностью.

import numpy as np
from pymc3 import *
import theano.tensor as t

K = 3 #NUMBER OF TOPICS
V = 20 #NUMBER OF WORDS
N = 15 #NUMBER OF DOCUMENTS


#GENERAETE RANDOM CATEGORICAL MIXTURES
data = np.ones([N,V])

@theano.compile.ops.as_op(itypes=[t.dmatrix, t.lscalar],otypes=[t.dvector])
def p(theta, z_i):
    return theta[z_i]


model = Model()
with model:

    alpha = np.ones(V)
    beta = np.ones(K)

    theta = Dirichlet('theta', alpha, shape=(K,V))
    phi = Dirichlet('phi', beta, shape=K)

    z = [Categorical('z_%i' % i, phi) for i in range(N)]

    x = [Categorical('x_%i' % (i), p=p(theta,z[i]), observed=data[i]) for i in range(N)]

    print "Created model.  Now begin sampling"
    step = Metropolis()
    trace = sample(10000, step)

    trace.get_values('phi')

Сообщение об ошибке, которое я получаю в приведенном выше коде:

TypeError: ожидаемый type_num 9 (NPY_INT64) получил 7 Применить узел, вызвавший ошибку: ScalarFromTensor(InplaceDimShuffle{}.0) Индекс Toposort: 11 Типы входных данных: [TensorType(int64, скалярный)] Входные данные: [()] Входные значения: [()] Входные значения: [array(1)] Выходные клиенты: [[Subtensor{int64}(Elemwise{TrueDiv}[(0, 0)].0, ScalarFromTensor.0)]]

0 ответов

Другие вопросы по тегам