【问题标题】:Indexing a tensor with None in PyTorch在 PyTorch 中使用 None 索引张量
【发布时间】:2021-12-16 05:23:59
【问题描述】:

我在 PyTorch 中看到过这种用于索引张量的语法,但不确定它的含义:

v = torch.div(t, n[:, None])

其中vtn 是张量。

None”在这里的作用是什么?我似乎在文档中找不到它。

【问题讨论】:

    标签: indexing syntax pytorch tensor


    【解决方案1】:

    与 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)

    【讨论】:

      猜你喜欢
      • 2019-02-05
      • 2020-03-28
      • 2019-11-26
      • 1970-01-01
      • 1970-01-01
      • 2020-09-26
      • 1970-01-01
      • 2021-02-11
      • 2021-11-04
      相关资源
      最近更新 更多