torch索引使用方式示例

发布时间 2023-08-27 22:37:41作者: 海_纳百川
  • 已知b = torch.Tensor([[1],[2]]),请问b[1]和b[[1]]的区别

在 PyTorch 中,b[1] 和 b[[1]] 之间有一个微妙的区别,这涉及到张量的索引和切片操作。让我解释一下两者之间的区别:

  1. b[1]:这是使用整数索引来获取张量 b 中的元素。由于 b 是一个形状为 (2, 1) 的张量,使用整数索引会选择第二个元素,即 2。这会返回一个包含标量值 2 的张量。

  2. b[[1]]:这是使用列表或张量索引来获取张量 b 中的元素。由于使用了双层方括号,所以实际上是在索引一个张量,即形状为 (1, 1) 的张量,其中包含的值是 2。这会返回一个形状为 (1, 1) 的张量。

以下是示例代码,说明两者之间的区别:

import torch

b = torch.tensor([[1], [2]])

# 使用整数索引
b_indexed = b[1]
print("b[1]:", b_indexed)  # 输出: tensor([2])

# 使用列表索引
b_list_indexed = b[[1]]
print("b[[1]]:", b_list_indexed)  # 输出: tensor([[2]])

总之,b[1] 返回一个包含标量值 2 的张量,而 b[[1]] 返回一个形状为 (1, 1) 的张量,其中包含值 2