随着新一批观测的到来,如何依次训练pymc3模型

时间:2018-10-03 15:43:44

标签: python bayesian pymc3

我想训练一次贝叶斯模型,然后在有新数据可用时更新模型。

可能有一个特定的名称(顺序培训?批量培训?),但我不知道。

以下是我想做的玩具代码:

import numpy as np
import pymc3 as pm
import theano
import theano.tensor as tt

# Very simple observed data (only 100s)
data = np.array([100] * 20)

# Very basic model
model = pm.Model()
with model:
    mu = pm.Normal('mu', mu=10, sd=10)
    sigma = pm.HalfNormal('sigma', sd=1)

    Y_obs = pm.Normal('Y', mu, sigma, observed=data)

    trace = pm.sample(500, tune=1000, target_accept=0.9)

print(trace['mu'][-10:])

# Now I would like to continue training my model using a new batch of data
new_data = np.array([200] * 20)

with model:
    Y_obs = pm.Normal('Y', mu, sigma, observed=new_data)

    trace = pm.sample(500, tune=1000, target_accept=0.9)  

结果是,在对第一批数据进行训练之后(如预期的那样),我得到了一个以100为中心的亩分布。

当我尝试使用第二批数据重新训练模型时,出现错误: “变量名称Y已经存在”

我希望我想做的很清楚,如果不是,请告诉我。

0 个答案:

没有答案