python - 找到两个 pytorch 张量的不相交
问题描述
提前感谢大家的帮助!我在 PyTorch 中尝试做的事情类似于 numpy's setdiff1d
。例如给定以下两个张量:
t1 = torch.tensor([1, 9, 12, 5, 24]).to('cuda:0')
t2 = torch.tensor([1, 24]).to('cuda:0')
预期的输出应该是(排序的或未排序的):
torch.tensor([9, 12, 5])
理想情况下,操作在 GPU 上完成,GPU 和 CPU 之间没有来回。非常感激!
解决方案
我遇到了同样的问题,但是在使用更大的数组时,建议的解决方案太慢了。以下简单的解决方案适用于 CPU 和 GPU,并且比其他建议的解决方案要快得多:
combined = torch.cat((t1, t2))
uniques, counts = combined.unique(return_counts=True)
difference = uniques[counts == 1]
intersection = uniques[counts > 1]
推荐阅读
- c - 使用指针数组打印字符串
- asp.net - 我可以将 web-form asp.net web 应用程序部署到谷歌云吗?
- android - 图像 uri 在 android 和 web 中是不同的
- python - Elastic Search 7 Python-Django 查找匹配文本的百分比
- word-wrap - Jodit Editor textarea 文本不换行
- python - 有没有办法使用列表中的 reg 表达式?
- javascript - 如何在 Nuxt.js 中仅设置中间件特定页面
- flutter - 使用 blocbuilder 检查 bloc 状态
- python - 如何计算此特定算法的时间复杂度?
- python - 如何使用熊猫在python中按字母对行值进行排序