def __init__(self, X, kern, Xm):
super(PITC, self).__init__("PITC")
M = np.shape(Xm)[0]
self.M = M
start = time.time()
X_split = np.array_split(X, M)
self.kern = kern
kern_blocks = np.zeros((M),dtype=object)
for t in xrange(M):
nyst = Nystrom(X_split[t], kern, Xm, False)
size = np.shape(X_split[t])[0]
kern_blocks[t] = kern.K(X_split[t], X_split[t]) - nyst.precon + (kern.noise)*np.identity(size)
self.blocks = kern_blocks
blocked = block_diag(*kern_blocks)
self.nyst = Nystrom(X, kern, Xm, False)
self.precon = self.nyst.precon + blocked
self.duration = time.time() - start
评论列表
文章目录