Pytorch基础:Tensor索引会导致创建新张量
相关阅读
Pytorch基础https://blog.csdn.net/weixin_45791458/category_12457644.html?spm=1001.2014.3001.5482
本文来源于博主无意之中的一个发现,当对tensor进行相同的索引操作时,每次返回的tensor对象的id值不同;对于一般的列表,每次返回的对象id值应该是相同(即意味着每次都是返回同一个对象)。
import torch # 创建普通的列表 y = [1, 2, 3, 4] y_1 = y[0] y_2 = y[0] print(id(y_1) == id(y_2)) true # 创建一个张量 x = torch.rand(3, 3, 3) x_1 = x[0] x_2 = x[0] print(id(x_1) == id(x_2)) false print(x_1.storage().data_ptr()==x_2.storage().data_ptr()==x.storage().data_ptr()) true索引的结果与原张量共享底层存储,但是由一个新的张量表示,且每次索引都会创建新的张量,需要注意此处张量与列表的区别,对于列表来说,无论索引几次,得到的结果都是同一个对象。