функция модели, включающая большой временной цикл (PYCM3) - PullRequest
2 голосов
/ 17 апреля 2019

Я пытаюсь запустить байсовую калибровку динамической модели с помощью PYMC3.

Функция моей модели включает в себя большой цикл времени, поэтому при компиляции модели с Theano объем оперативной памяти превышает емкость.Для этой проблемы я нашел, как вызвать функцию как черный ящик.Однако есть ли другой способ справиться с этой проблемой без использования метода черного ящика?

вот иллюстрация:


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=...

...