包含大时间循环的模型函数(PYCM3)

2024-04-24 09:46:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试着用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=...


Tags: 方法函数模型step黑盒uniformupperlower