gpt4 book ai didi

python - 关于 pytorch 张量的奇怪行为。有谁能解释清楚吗?

转载 作者:行者123 更新时间:2023-11-28 17:58:11 26 4
gpt4 key购买 nike

当我创建一个 PyTorch 张量并尝试探索它的类型时,我发现了这个:

>>> a = torch.rand(3,5)
>>> a
tensor([[0.3356, 0.0968, 0.2185, 0.9843, 0.7846],
[0.8523, 0.3300, 0.7181, 0.2692, 0.6523],
[0.0523, 0.9344, 0.3505, 0.8901, 0.6464]])
>>> type(a)
<class 'torch.Tensor'>
>>> a = a.cuda()
>>> a.is_cuda
True
>>> type(a)
<class 'torch.Tensor'>
>>> a.dtype
torch.float32
>>>

为什么 type(a) 仍然是 torch.Tensor 而不是 torch.cuda.Tensor,即使这个张量已经在 GPU 上了?

最佳答案

你让我在那里挖掘,但显然 type() 作为 built-in 方法不适用于类型检测,因为 0.4.0 (参见 this commentthis point in migration guide)。

为了得到正确的类型,torch.Tensor 类有 type() member,可以简单地使用:

import torch

a = torch.rand(3, 5)
print(a)
print(a.type())
a = a.to("cuda")
print(a.is_cuda)
print(a.type())

如预期的那样产生:

tensor([[0.5060, 0.6998, 0.5054, 0.4822, 0.4408],
[0.7686, 0.4508, 0.4968, 0.4460, 0.7352],
[0.1810, 0.6953, 0.7499, 0.7105, 0.1776]])
torch.FloatTensor
True
torch.cuda.FloatTensor

但是我不确定该决定背后的理由,除此之外找不到任何相关内容。

关于python - 关于 pytorch 张量的奇怪行为。有谁能解释清楚吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57104935/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com