PyTorch 获取二维张量中的值索引
PyTorch get indices of value in two-dimensional tensor
给定以下张量(或任何二维随机张量),我想获得 '101' 的索引:
tens = tensor([[ 101, 146, 1176, 21806, 1116, 1105, 18621, 119, 102, 0,
0, 0, 0],
[ 101, 1192, 1132, 1136, 1184, 146, 1354, 1128, 1127, 117,
1463, 119, 102],
[ 101, 6816, 1905, 1132, 14918, 119, 102, 0, 0, 0,
0, 0, 0]])
从相关的回答我知道我可以做这样的事情:
idxs = torch.tensor([(i == 101).nonzero() for i in tens])
但这看起来很乱而且可能很慢。有没有更好的方法来做到这一点,它又快又火炬?
仅讨论一维张量的相关问题:
- How Pytorch Tensor get the index of elements?
怎么样(tens == 101).nonzero()[:, 1]
In [20]: from torch import tensor
In [21]: tens = torch.tensor([[ 101, 146, 1176, 21806, 1116, 1105, 18621, 119, 102, 0,
...: 0, 0, 0],
...: [ 101, 1192, 1132, 1136, 1184, 146, 1354, 1128, 1127, 117,
...: 1463, 119, 102],
...: [ 101, 6816, 1905, 1132, 14918, 119, 102, 0, 0, 0,
...: 0, 0, 0]])
In [22]: (tens == 101).nonzero()[:, 1]
Out[22]: tensor([0, 0, 0])
给定以下张量(或任何二维随机张量),我想获得 '101' 的索引:
tens = tensor([[ 101, 146, 1176, 21806, 1116, 1105, 18621, 119, 102, 0,
0, 0, 0],
[ 101, 1192, 1132, 1136, 1184, 146, 1354, 1128, 1127, 117,
1463, 119, 102],
[ 101, 6816, 1905, 1132, 14918, 119, 102, 0, 0, 0,
0, 0, 0]])
从相关的回答我知道我可以做这样的事情:
idxs = torch.tensor([(i == 101).nonzero() for i in tens])
但这看起来很乱而且可能很慢。有没有更好的方法来做到这一点,它又快又火炬?
仅讨论一维张量的相关问题:
- How Pytorch Tensor get the index of elements?
怎么样(tens == 101).nonzero()[:, 1]
In [20]: from torch import tensor
In [21]: tens = torch.tensor([[ 101, 146, 1176, 21806, 1116, 1105, 18621, 119, 102, 0,
...: 0, 0, 0],
...: [ 101, 1192, 1132, 1136, 1184, 146, 1354, 1128, 1127, 117,
...: 1463, 119, 102],
...: [ 101, 6816, 1905, 1132, 14918, 119, 102, 0, 0, 0,
...: 0, 0, 0]])
In [22]: (tens == 101).nonzero()[:, 1]
Out[22]: tensor([0, 0, 0])