我正试着用PYMC3对一个动态模型进行baysian校准。你知道吗
我的模型函数包含一个大的时间循环,因此当用Theano编译模型时,RAM内存超出了容量。对于这个问题,我发现了如何将函数作为黑盒调用。但是,有没有其他方法来处理这个问题而不使用黑盒方法?你知道吗
下面是一个例子:
with pm.Model():
# DECLARE PRIOR
var1 = pm.Uniform('var1', lower=0.5, upper=1.5)
var2 = pm.Uniform('var2', lower=0.5, upper=1.5)
var3 = pm.Uniform('var3', lower=0.5, upper=1.5)
var4 = pm.Uniform('var4', lower=0.5, upper=1.5)
theta = tt.as_tensor_variable([var1, var2, var3,var4])
# DECLARE OBJECTIVE FUNCTION
mu = pm.Deterministic('mu', tt.as_tensor_variable(my_model(theta,x)))
sigma = pm.HalfNormal('sigma', 0.15)
y_obs = pm.Normal('y_obs', mu=mu, sd=sigma, observed=data)
step = pm.Metropolis()
trace = pm.sample(ndraws, tune=nburn, njobs=njobs, step=step)
```
my_model is a code using mainly numpy and pandas and including large time loops such :
for t in range(1,1000):
x=...
目前没有回答
相关问题 更多 >
编程相关推荐