机器之心报道
编辑:陈萍
有人将快速可微分排序算法打包实现,性能还不错。
项目地址:https://github.com/teddykoker/torchsort
《Fast Differentiable Sorting and Ranking》论文地址:https://arxiv.org/pdf/2002.08871.pdf
pip install torchsort
import torchimport torchsortx = torch.tensor([[8, 0, 5, 3, 2, 1, 6, 7, 9]])regularization_strength=1.0)# tensor([[0.5556, 1.5556, 2.5556, 3.5556, 4.5556, 5.5556, 6.5556, 7.5556, 8.5556]])regularization_strength=0.1)# tensor([[-0., 1., 2., 3., 5., 6., 7., 8., 9.]])torchsort.soft_rank(x)# tensor([[8., 1., 5., 4., 3., 2., 6., 7., 9.]])
x = torch.tensor([[8., 0., 5., 3., 2., 1., 6., 7., 9.]], requires_grad=True).cuda()y = torchsort.soft_sort(x)torch.autograd.grad(y[0, 0], x)# (tensor([[0.1111, 0.1111, 0.1111, 0.1111, 0.1111, 0.1111, 0.1111, 0.1111, 0.1111]],# device='cuda:0'),)
import torchimport torchsortdef spearmanr(pred, target, **kw):pred = torchsort.soft_rank(pred, **kw)target = torchsort.soft_rank(target, **kw)pred = pred - pred.mean()pred = pred / pred.norm()target = target - target.mean()target = target / target.norm()return (pred * target).sum()pred = torch.tensor([[1., 2., 3., 4., 5.]], requires_grad=True)target = torch.tensor([[5., 6., 7., 8., 7.]])spearman = spearmanr(pred, target)# tensor(0.8321)pred)# (tensor([[-5.5470e-02, 2.9802e-09, 5.5470e-02, 1.1094e-01, -1.1094e-01]]),)
建新·见智 —— 2021亚马逊云科技 AI 在线大会
4月22日 14:00 - 18:00
识别二维码或点击阅读原文,免费报名看直播。
© THE END
转载请联系本公众号获得授权
投稿或寻求报道:content@jiqizhixin.com