Pytorch 始终使用torch.tensor或torch.FLOTTENSOR安全吗?还是我需要小心治疗Ints?
我试图理解Pytorch 始终使用torch.tensor或torch.FLOTTENSOR安全吗?还是我需要小心治疗Ints?,pytorch,Pytorch,我试图理解张量、FloatTensor、IntTensor之间的区别,我想知道我是否可以始终坚持张量。。。或者可能是FloatTensor 我将使用不同张量的混合,将: {integers:labels, floats:continuous, one-hot-encoded:categoricals} 我是否需要显式地将每种变量设置为不同类型的张量?它们都会像浮子一样工作吗?他们会联合工作吗 这会给我带来麻烦吗 l_o_l = [[1,2,3],[1,2,3],[1,2,3]] int_t
张量、FloatTensor、IntTensor
之间的区别,我想知道我是否可以始终坚持张量
。。。或者可能是FloatTensor
我将使用不同张量的混合,将:
{integers:labels, floats:continuous, one-hot-encoded:categoricals}
我是否需要显式地将每种变量设置为不同类型的张量?它们都会像浮子一样工作吗?他们会联合工作吗
这会给我带来麻烦吗
l_o_l = [[1,2,3],[1,2,3],[1,2,3]]
int_tnz = th.FloatTensor(l_o_l)
int_tnz
张量([[1,2,3.],
[1., 2., 3.],
[1,2,3.]]
火炬32
张量([[1.1000,2.2000,3.3000], [1.1000, 2.2000, 3.3000], [1.1000,2.2000,3.3000]]
torch.float32
交叉权限
(或nlloss
)预期目标
类型为长
。例如,下面的代码会引发运行时错误
:
import torch.nn
标准=torch.nn.CrossEntropyLoss()
预测=火炬.rand(10,10,数据类型=火炬.float)
目标=torch.rand(10)#到(torch.long)
标准(预测、目标)
#RuntimeError:标量类型应为Long,但找到Float
您需要取消对转换的注释以使其工作。我想不出更大的问题了,但是为什么要首先把整数转换成浮点呢
关于
torch.tensor
和torch.FloatTensor
的使用,我更喜欢前者torch.FloatTensor
似乎是传统的构造函数,它不接受device
作为参数。同样,我不认为这是一个大问题,但仍然使用torch.tensor
增加了代码的可读性。我已经能够在所有类型的数据类型上使用FloatTensor
不能平均整数张量,这很有意义
a = th.tensor([1,1])
b = th.tensor([2,2])
th.mean(th.stack([a,b]))
RuntimeError:只能计算浮点类型的平均值。反而变长了。
l_o_fl = [[1.1,2.2,3.3],[1.1,2.2,3.3],[1.1,2.2,3.3]]
int_tnz = th.tensor(l_o_fl)
int_tnz
int_tnz.dtype
a = th.tensor([1,1])
b = th.tensor([2,2])
th.mean(th.stack([a,b]))