【发布时间】:2020-03-29 17:41:49
【问题描述】:
例如,我想获取张量 a 中值 0 和 2 的元素的索引。这些值(0 和 2)存储在张量 b 中。我已经设计了一种 pythonic 方式来做到这一点(如下所示),但我不认为列表推导被优化为在 GPU 上运行,或者也许有一种我不知道的更 PyTorchy 方式来做到这一点。
import torch
a = torch.tensor([0, 1, 0, 1, 1, 0, 2])
b = torch.tensor([0, 2])
torch.tensor([x in b for x in a]).nonzero()
>>>> tensor([[0],
[2],
[5],
[6]])
还有其他建议吗?或者这是可以接受的方式吗?
【问题讨论】:
-
在 numpy 中,我相信你可以使用
np.nonzero(np.isin(a, b))来做到这一点,假设a和b是 numpy 数组。不幸的是,isin目前不是 pytorch 操作,尽管有一个开放的功能请求以及依赖于in the pytorch issue tracker 提供的广播的次优版本。