如何在pymc3中使用FreeRV作为theano函数输入

时间:2015-03-23 06:56:09

标签: theano pymc

我正在尝试使用pymc3对我的系统进行建模:n随机变量,未知分布,与函数z的某些观测数据findz相关。我已经使用theano编写了函数findz,但是我不确定如何将随机指标输入到我的theano代码中。这就是我的尝试:

w = T.dscalar('w')
I = T.dvector('i')
R = T.dvector('r')
L = I.size-1
Cn = np.array([1,-1])*T.sqrt(w/R[-1])))

result, updates = theano.scan(fn=step, \
    sequences=[dict(input=I[::-1],taps=[-1,0]),R[::-1]], n_steps=L,\
    outputs_info=Cn, non_sequences = w)

final_result = result[-1]
find_z = theano.function(inputs=[I,R,w],outputs=final_result,updates=updates)

interfaces = np.logspace(2,3.9,9)[3:]

with pm.Model() as model:
    list_of_dist = [pm.Uniform('res'+str(i),1,100,testval=50) for i in range(len(interfaces))]
    z_hat = pm.Deterministic('z_hat',find_z(interfaces,list_of_dist,10))
    z_like = pm.Normal('z_like',mu=z_hat,sd=z_err,observed=z)

这会在z_hat行返回错误:

  

ValueError :('带名称的theano函数的错误输入参数   " scan_pm_v.py:60"在索引1(从0开始)','设置数组元素   用序列。')

我可以将list_of_dist设置为numpy对象,然后给出错误

  

AttributeError :('带名字的theano函数的错误输入参数   " scan_pm_v.py:60"在索引1(从0开始)',"'浮动'对象没有   属性' dtype'")

在同一条线上。我还尝试通过添加以下行来输入aano张量:

list_of_dist = T.stacklists(list_of_dist)

然后返回错误:

  

TypeError :('带名称的theano函数的错误输入参数   " scan_pm_v.py:60"在索引1(从0开始)','预期类似于数组   对象,但找到了一个变量:也许你正试图调用一个函数   在(可能是共享的)变量而不是数字数组?')

0 个答案:

没有答案