问题描述
我在pymc2中有这样的模型。
p = Uniform(name='p',lower=p_lowers,upper=p_uppers,value=p_values)
MIM_Model = pm.Deterministic(eval = MIM_eval,name = 'NEE_Model',parents = {'p': p,'Csom_0': Csom_0,'Tave': Tave,'Tmax': Tmax,'Rg': Rg,'RH': RH,'VPD':VPD,'Lat':Lat,'a2': a2},doc = 'model construction',trace = True,verbose = 0,dtype = float,plot = False,cache_depth = 2)
所有变量(Rg':Rg,'RH':RH,'VPD':VPD,'Lat':Lat)都是数组。
def MIM_eval(p,Csom_0,Tave,Tmax,Rg,RH,VPD,Lat,a2):
p1 = p[0]#*1.e5
p2 = p[1]#*1.e5
p3 = p[2]#*1.e5
p4 = p[3]#*1.e5
p5 = p[4]#*1.e5
....
Lf[0][i] = p6*Cf_0
Ln[0][i] = p8*Cn_0
Lr[0][i] = p7*Cr_0
....
_results = []
for j in range(obs_size):
tmp_result = []
for k in idx[j]:
tmp_result.append(round(all_results[j][0][k],8))
_results.append(tmp_result)
# Return the model result.
return _results
这在pymc2中运行良好,但是我不能在pymc3中使用它,因为确定性中的参数必须是theano变量,我搜索了很多示例,但没有一个适合这种情况(因为参数太多); >
- 在线示例中,theanovar太简单了...
normal('v3',mu=mean,sigma=half_cauchy)
# Deterministic variables can be used in usual way
Deterministic('v3_sq',self.v3 ** 2)
在我的情况下,我尝试了以下操作,但是我不知道如何在pymc3中编写MIM_eval,导致确定性参数无法接收数组类型。
MIM_Model = pm.Deterministic('MIM_Model',MIM_eval(p,Cf_0,Cr_0,Cw_0,Clit_0,Nt,Ta))
def MIM_eval(p,a2):
# ???
# can't return results
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)