def ssgpr(self, X, kern, S, Y):
[N, D] = X.shape
m = len(S)/D
W = np.reshape(S, (m, D), order='F')
phi = np.dot(X, W.T)
phi = np.hstack((np.cos(phi), np.sin(phi)))
A = np.dot(phi.T, phi) + kern.noise*np.identity(2*m)
R = cholesky(A, lower=False)
PhiRi = np.linalg.lstsq(R.T, phi.T)[0] # PhiRi = phi/R
Rtphity = np.dot(PhiRi, Y.flatten())
return 0.5/kern.noise*(np.sum(np.power(Y,2))-kern.noise/m*np.sum(np.power(Rtphity,2))) + np.sum(np.log(np.diag(R))) + (N/2 - m)*np.log(kern.noise)+N/2*np.log(2*np.pi)
评论列表
文章目录