torch.cuda.FloatTensor 与 torch.FloatTensor(torch.Tensor)--CPU和GPU上的数据类型
torch.cuda.FloatTensor
与torch.FloatTensor
Pytorch中的tensor又包括CPU上的数据类型和GPU上的数据类型,一般GPU上的Tensor是CPU上的Tensor加cuda()函数得到的。
一般系统默认是torch.FloatTensor
类型(即CPU上的数据类型)。例如data = torch.Tensor(2,3)
是一个2*3的张量,类型为FloatTensor; data.cuda()
就转为GPU的张量类型,torch.cuda.FloatTensor
类型。torch.Tensor
与torch.tensor
torch.Tensor
:torch.Tensor()
是Python类,更明确的说,是默认张量类类型torch.FloatTensor()
的别名,torch.Tensor([1,2])
会调用Tensor类的构造函数__init__,生成单一精度浮点类的张量。
torch.tensor()
:torch.tensor()
只是Python的函数,函数原型是: torch.tensor(data, dtype=None, device=None, requires_grad=False)
中data可以是:list, tuple, array, 标量等类型。
torch.tensor()
可以从数据中的数据部分做选择(而不是直接引用),根据原始数据类型生成相应的torch.LongTensor
,torch.FloatTensor
,torch.DoubleTensor
。
使用
x=torch.Tensor(4,3,2,2)
# 4是块数 3 是维度 ,2*2
输出:
tensor([[[[ 0.0000e+00, 4.7987e+30],
[ 0.0000e+00, 0.0000e+00]],
[[ 0.0000e+00, 0.0000e+00],
[ 0.0000e+00, 0.0000e+00]],
[[ 0.0000e+00, 0.0000e+00],
[ 0.0000e+00, 0.0000e+00]]],
[[[ 0.0000e+00, 0.0000e+00],
[ 0.0000e+00, 0.0000e+00]],
[[ 0.0000e+00, 0.0000e+00],
[ 0.0000e+00, 0.0000e+00]],
[[ 0.0000e+00, 0.0000e+00],
[ 0.0000e+00, 0.0000e+00]]],
[[[-1.3734e-30, 9.0944e-43],
[ 0.0000e+00, 0.0000e+00]],
[[ 1.4013e-45, 1.1286e+27],
[ 0.0000e+00, 0.0000e+00]],
[[ 5.1175e-41, 0.0000e+00],
[ 0.0000e+00, 0.0000e+00]]],
[[[ 9.3084e+02, 4.5907e-41],
[-1.8294e-28, 9.0944e-43]],
[[ 0.0000e+00, 1.1724e+04],
[ 0.0000e+00, 0.0000e+00]],
[[ 0.0000e+00, 0.0000e+00],
[ 0.0000e+00, 0.0000e+00]]]])