PytorchTensor与其转置Tensor具有不同的存储空间

laawzig2  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(164)

我在阅读Pytorch的《深度学习》一书,并尝试了一个例子,它表明Tensor和它的转置共享相同的存储。
然而,当我在我的本地机器上试用它时,我可以看到两者的存储是不同的。只是想了解为什么这里可能会出现这种情况?
我尝试的代码和输出如下:

>>> points = torch.tensor([[4.0, 1.0], [5.0, 3.0], [2.0, 1.0]])
>>> points_t = torch.transpose(points,0,1)
>>> points_t
tensor([[4., 5., 2.],
        [1., 3., 1.]])
>>> id(points.storage())==id(points_t.storage())
False
>>> id(points.storage())
2796700202176
>>> id(points_t.storage())
2796700201888

我的python版本是3.9.7,pytorch版本是1.11.0

kyvafyod

kyvafyod1#

您需要比较存储的指针,而不是获取它的id。

>>> points = torch.tensor([[4.0, 1.0], [5.0, 3.0], [2.0, 1.0]])
>>> points_t = torch.transpose(points,0,1)
>>> points_t
tensor([[4., 5., 2.],
        [1., 3., 1.]])
>>> points.storage().data_ptr() == points_t.storage().data_ptr()
True

id比较结果为False的原因是Python对象(points和points_t)是不同的对象,但底层存储(分配用于保存数据的内存)是相同的。

相关问题