Я пытаюсь запустить байсовую калибровку динамической модели с помощью 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=...