相关阅读
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
索引的结果与原张量共享底层存储,但是由一个新的张量表示,且每次索引都会创建新的张量,需要注意此处张量与列表的区别,对于列表来说,无论索引几次,得到的结果都是同一个对象。