我使用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参数并将数据作为结果数组,但似乎没有任何效果。
有没有人知道如何进行推理,以便网络针对整个数据集而不是单个输出进行优化?