Matrix 如何编写作用于PyMC3随机变量的无函数?

Matrix 如何编写作用于PyMC3随机变量的无函数?,matrix,theano,pymc3,Matrix,Theano,Pymc3,我已经编写了一个Theano函数,它可以自己工作。这个想法有点类似于点积,但您的方法是使用减法,而不是将元素相乘,并且不求最终结果的和 a=tensor.matrix() b=张量矩阵() subs=[a[0,i]-b[i,0]表示范围(3)内的i] 函数=编号函数([a,b],子函数) d=函数(np.array([[0,0,0]]),np.array([[1]], [1], [1]])) 印刷品(d) >>> [数组(-1.),数组(-1.),数组(-1.)] 现在,当我尝试在PyMC3模

我已经编写了一个Theano函数,它可以自己工作。这个想法有点类似于点积,但您的方法是使用减法,而不是将元素相乘,并且不求最终结果的和

a=tensor.matrix()
b=张量矩阵()
subs=[a[0,i]-b[i,0]表示范围(3)内的i]
函数=编号函数([a,b],子函数)
d=函数(np.array([[0,0,0]]),np.array([[1]],
[1],
[1]]))
印刷品(d)
>>>
[数组(-1.),数组(-1.),数组(-1.)]
现在,当我尝试在PyMC3模型中运行时,作用于两个随机变量,Theano抛出错误:

responses=np.array([
[0,1,2,2,2],
[0,1,2,1,1],
[0,1,2,0,0],
[0,1,2,0,1],
[0,1,2,1,0]  
])
学生=5
问题=5
类别=3
a=张量矩阵()
b=张量矩阵()
elem_sub=[a[0,i]-b[i,0]表示范围(3)内的i]
函数=编号函数([a,b],元素子)
使用pm.Model()作为模型:
z_学生=pm.Normal(“z_学生”,mu=0,sigma=1,shape=(学生,类别))
z_问题=pm.Normal(“z_问题”,mu=0,sigma=1,shape=(类别,问题))
#变换参数
θ=pm.Deterministic(“θ”,tt.nnet.softmax(函数(z_学生,z_问题)))
#可能性
kij=pm.Categorical(“kij”,p=theta,观察值=responses)
错误如下:

TypeError:将名为“z_student”的错误输入到索引0处名为“:23”的无函数(基于0)。
创建该变量时进行回溯:
应该是一个类似数组的对象,但找到了一个变量:可能您正在尝试对一个(可能是共享的)变量而不是数值数组调用函数?
因此,PyMC3似乎无法将此函数应用于随机变量。我的问题是: (1) 我该如何解决这个问题? (2) 为什么会抛出错误?(我以为Theano是PyMC3后端…)

如果你需要更多关于我为什么要这样做的背景,请阅读对话频道: