如何在PyTorch中将numpy数组转换为LongTensor类型的变量?

时间:2018-06-19 12:12:24

标签: python casting deep-learning pytorch tensor

我正在尝试将numpy array转换为PyTorch LongTensor类型Variable,如下所示:

import numpy as np
import torch as th

y = np.array([1., 1., 1.1478225, 1.1478225, 0.8521775, 0.8521775, 0.4434675])
yth = Variable(th.from_numpy(y)).type(torch.LongTensor)

但是我得到的结果是四舍五入的版本:

tensor([ 1,  1,  1,  1,  0,  0,  0])

如何在获取array变量的同时保持numpy LongTensor的精度?

预期结果应该是:

tensor([1., 1., 1.1478225, 1.1478225, 0.8521775, 0.8521775, 0.4434675])

1 个答案:

答案 0 :(得分:0)

LongTensor表示张量为long / int64类型的张量(参见table in doc)。这样,您的float值就会转换(即四舍五入)为整数。

要保留浮点值,请改用FloatTensorfloat32)或DoubleTensorfloat64)。