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]))