def gradient(self, x, D=None):
"""
Return gradient
"""
dx = np.array([np.subtract.outer(x[:,d],x[:,d]) for d in range(x.shape[1])])
D = calc_distances(x) if D is None else D
D = D**(-0.5*self.n-1)
D = squareform(D)
g = - self.n * dx * D
return g.sum(-1).T
评论列表
文章目录