【发布时间】:2021-12-16 05:23:59
【问题描述】:
我在 PyTorch 中看到过这种用于索引张量的语法,但不确定它的含义:
v = torch.div(t, n[:, None])
其中v、t 和n 是张量。
“None”在这里的作用是什么?我似乎在文档中找不到它。
【问题讨论】:
标签: indexing syntax pytorch tensor
我在 PyTorch 中看到过这种用于索引张量的语法,但不确定它的含义:
v = torch.div(t, n[:, None])
其中v、t 和n 是张量。
“None”在这里的作用是什么?我似乎在文档中找不到它。
【问题讨论】:
标签: indexing syntax pytorch tensor
与 NumPy 类似,您可以通过使用 None 对该维度进行索引来插入单个维度("unsqueeze" 一个维度)。而n[:, None] 将产生在dim=1 上插入新维度的效果。这相当于n.unsqueeze(dim=1):
>>> n = torch.rand(3, 100, 100)
>>> n[:, None].shape
(3, 1, 100, 100)
>>> n.unsqueeze(1).shape
(3, 1, 100, 100)
这里有一些其他类型的None 索引。
在上面的示例中,: 被用作占位符来指定第一个维度 dim=0。如果要在dim=2 上插入维度,可以添加第二个: 作为n[:, :, None]。
您也可以放置 None 相对于最后一个维度。为此,您可以使用ellipsis 语法...:
n[..., None] 将最后插入一个维度,即 n.unsqueeze(dim=-1)。
n[..., None, :] 在最后一个维度上,即 n.unsqueeze(dim=-2)。
【讨论】: