def predict_forward_mm(self, T, x_control):
"""Summary
Args:
T (TYPE): Description
x_control (None, optional): Description
Returns:
TYPE: Description
"""
mx = np.zeros((T, self.Din))
vx = np.zeros((T, self.Din))
my = np.zeros((T, self.Dout))
vy_noiseless = np.zeros((T, self.Dout))
vy = np.zeros((T, self.Dout))
post_m, post_v = self.get_posterior_x()
mtm1 = post_m[[-1], :]
vtm1 = post_v[[-1], :]
for t in range(T):
if self.Dcon_dyn > 0:
mtm1 = np.hstack((mtm1, x_control[[t], :]))
vtm1 = np.hstack((vtm1, np.zeros((1, self.Dcon_dyn))))
mt, vt = self.dyn_layer.forward_prop_thru_post(mtm1, vtm1)
if self.Dcon_emi > 0:
mtc = np.hstack((mt, x_control[[t], :]))
vtc = np.hstack((vt, np.zeros((1, self.Dcon_emi))))
else:
mtc, vtc = mt, vt
if self.gp_emi:
mft, vft = self.emi_layer.forward_prop_thru_post(mtc, vtc)
myt, vyt_n = self.lik_layer.output_probabilistic(mft, vft)
else:
myt, vyt, vyt_n = self.emi_layer.output_probabilistic(mt, vt)
vft = np.diagonal(vyt, axis1=1, axis2=2)
vyt_n = np.diagonal(vyt_n, axis1=1, axis2=2)
mx[t, :], vx[t, :] = mt, vt
my[t, :], vy_noiseless[t, :], vy[t, :] = myt, vft, vyt_n
mtm1 = mt
vtm1 = vt
return mx, vx, my, vy_noiseless, vy
评论列表
文章目录