def get_laplace_block_inversion(self, Wsqrt):
diag_blocks = self.blocks
Wsqrt_split = np.array_split(Wsqrt, self.M)
inverted_blocks = np.zeros(len(diag_blocks), dtype=object)
for i in xrange(len(diag_blocks)):
Wblock = np.diag(Wsqrt_split[i].flatten())
block = np.dot(Wblock, np.dot(diag_blocks[i], Wblock))
inverted_blocks[i] = np.linalg.inv(block + np.identity(len(Wblock)))
return block_diag(*inverted_blocks)
评论列表
文章目录