def pd_weight_grads_future(xc, ec, kp, kd):
r = kd/float(kp+kd)
kd=float(kd)
scale_factor = 1./float(kp**2 + 2*kp*kd)
n_samples = xc.shape[0]
assert n_samples == ec.shape[0]
n_in = xc.shape[1]
n_out = ec.shape[1]
dws = np.zeros((n_samples, n_in, n_out))
xr = np.zeros(n_in)
er = np.zeros(n_out)
for t in xrange(n_samples):
xr *= r
er = er*r + ec[t]
dws[t] = (xc[t][:, None]*er[None, :] + xr[:, None]*ec[t][None, :]) * scale_factor
xr += xc[t]
# er += ec[t]
return np.cumsum(dws, axis=0)
评论列表
文章目录