Thanks so much for your reply.
In the model, z follows a categorical distribution. But the following code still does not work.
(For your convenience, you can download the codes here:etection.py (2.0 KB))
with pm.Model() as model:
myBeta = np.eye(N)*0.8
myBeta = myBeta + np.ones([N,N])*0.2-np.eye(N)*0.2
pi = pm.Dirichlet('pi', a=alpha*np.ones(K),shape=[N,K])
z = np.empty([N,N], dtype=object)
for node1 in range(N):
z[node1] = pm.Categorical('z_%d' % node1, p=pi[node1],shape=N)
pD = tt.switch(tt.eq(z, z.T), myBeta[z], eps)
y = pm.Bernoulli('D', p=pD, observed=Topology_Data)
The error messages are as follows:
> c:\users\twp\downloads\ection.py(64)<module>()
3--> 64 pD = tt.switch(tt.eq(z, z.T),
ipdb> myBeta[z], eps)
65 y = pm.Bernoulli('D', p=pD, observed=Topology_Data)
theano.tensor.var.AsTensorError: ('Cannot convert [[z_0 z_0 z_0 z_0 z_0]\n [z_1 z_1 z_1 z_1 z_1]\n [z_2 z_2 z_2 z_2 z_2]\n [z_3 z_3 z_3 z_3 z_3]\n [z_4 z_4 z_4 z_4 z_4]] to TensorType', <class 'numpy.ndarray'>)