def __call__(self, X, Y=None):
XX = np.sum(X * X, axis=1)[:,np.newaxis]
if Y is None:
Y = X
YY = XX.T
else:
YY = np.sum(Y * Y, axis=1)[np.newaxis,:]
distances = XX + YY # Using broadcasting
distances -= 2 * np.dot(X, Y.T)
distances = np.maximum(distances, 0)
return np.exp(- self.gamma * distances)
评论列表
文章目录