| 12345678910111213 |
- import torch
- def kde(x, std = 0.1, half = True, down = None):
- # use a gaussian kernel to estimate density
- if half:
- x = x.half() # Do it in half precision TODO: remove hardcoding
- if down is not None:
- scores = (-torch.cdist(x,x[::down])**2/(2*std**2)).exp()
- else:
- scores = (-torch.cdist(x,x)**2/(2*std**2)).exp()
- density = scores.sum(dim=-1)
- return density
|