torch索引使用方式示例
-
已知b = torch.Tensor([[1],[2]]),请问b[1]和b[[1]]的区别
在 PyTorch 中,b[1]
和 b[[1]]
之间有一个微妙的区别,这涉及到张量的索引和切片操作。让我解释一下两者之间的区别:
-
b[1]:这是使用整数索引来获取张量
b
中的元素。由于b
是一个形状为 (2, 1) 的张量,使用整数索引会选择第二个元素,即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
。