【发布时间】:2019-08-02 06:00:48
【问题描述】:
提前感谢大家的帮助!我在 PyTorch 中尝试做的事情类似于 numpy 的 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 之间没有来回。非常感谢!
【问题讨论】:
-
您可以直接在 Torch 张量上使用 numpy 操作而无需复制:
torch.from_numpy(np.setdiff1d(t1.numpy(),t2.numpy())) -
非常感谢@romeric,我很抱歉我的问题没有明确表达。我希望为此使用 CUDA 张量并仅在 GPU 上进行操作,而转换为 ndarray 需要先将张量发送回 cpu。