Pymc3:使用多个数据优化参数?

时间:2017-06-16 14:15:38

标签: python pymc3 bayesian-networks

我使用Pymc3设计了一个模型,我在使用多个数据进行优化时遇到了一些麻烦。

该模型有点类似于煤炭开采灾难(如Pymc3教程中的知识),除了有多个切换点。

网络的输出是一系列实数,例如: [151,152,150,20,19,18,0,0,0]

with Model() as accrochage_model:


       time=np.linspace(0,n_cycles*data_length,n_cycles*data_length)

       poisson = [Normal('poisson_0',5,1), Normal('poisson_1',10,1)]

       variance=3

       t = [Normal('t_0',0.5,0.01), Normal('t_1',0.7,0.01)]

       taux = [Bernoulli('taux_{}'.format(i),t[i]) for i in range(n_peaks)]

       switchpoint = [Poisson('switchpoint_{}'.format(i),poisson[i])*taux[i] for i in range(n_peaks)]

       peak=[Normal('peak_0',150,2),Normal('peak_1',50,2),Normal('peak_2',0,2)]

       z_init=switch(switchpoint[0]>=time%n_cycles,0,peak[0])
       z_list=[switch(sum(switchpoint[j] for j in range(i))>=time%n_cycles,0,peak[i]-peak[i-1]) for i in range(1,n_peaks)]

       z=(sum(z_list[i] for i in range(len(z_list))))
       z+=z_init

       m =Normal('m', z, variance,observed=data) 

我对真实发行版有多种认识,我希望在优化系统参数的同时考虑所有这些内容。

现在我的"数据"在observe = data中出现的只是一个结果列表,例如:

[151,152,150,20,19,18,0,0,0]

我想做的不只是提供一个而是几个结果列表, 例如:

data=([151,152,150,20,19,18,0,0,0],[145,152,150,21,17,19,1,0,0],[151,149,153,17,19,18,0,0,1])

我尝试使用shape参数并将数据作为结果数组,但似乎没有任何效果。

有没有人知道如何进行推理,以便网络针对整个数据集而不是单个输出进行优化?

0 个答案:

没有答案