def get_dists(X): """Keras code to compute the pairwise distance matrix for a set of vectors specifie by the matrix X. """ x2 = torch.expand_dims(torch.sum(torch.power(X, 2), axis=1), 1) dists = x2 + torch.transpose(x2) - 2 * torch.dot(X, torch.transpose(X)) return dists
def compute_kernel(x, y): x_size = x.shape[0] y_size = y.shape[0] dim = x.shape[1] tiled_x = tile(x.view(x_size, 1, dim), y.view(1, y_size, 1)) tiled_y = tile(x.view(y_size, 1, dim), x.view(x_size, 1, 1)) a = torch.exp(-torch.mean(torch.power(tiled_x - tiled_y, 2), dim=2)) / dim return a
def forward(self, x, y): loss = -(y * torch.log(x) * torch.power((y - x), 2)).cpu().sum(1) loss = loss.mean() return loss
def squared_distance(x1, x2): return (torch.power(x1, 2).sum(dim=1, keepdim=True) - 2.0 * x1 @ x2.T + torch.power(x2, 2).sum(dim=1, keepdim=True).T)
def _mu2float(self, mdata) : d=1/(self.nvals-1) y=[ torch.sign(x)*d*(torch.power(self.nvals,torch.abs(x))-1) for x in mdata ] return y
def minkowski(a, b, p): return torch.power(torch.sum(torch.pow(torch.abs(a - b), p)), 1 / p)