【发布时间】:2019-06-26 14:50:49
【问题描述】:
我有一个浮点张量,它是通过将矩阵乘以它的逆矩阵(所以是单位矩阵)。当我转换为 int 时,它不是单位矩阵,即 1.0000e00 变为 0。我需要一种通过舍入进行类型转换的方法。
我尝试过使用 .int() 和 .long() 进行类型转换,但它们四舍五入为零。具体来说:
I = tensor([[ 1.0000e+00, 1.1921e-07, -1.1921e-07],
[-5.9605e-08, 1.0000e+00, 0.0000e+00],
[-2.9802e-08, 0.0000e+00, 1.0000e+00]])
I = I.long()
print(I)
给予:
tensor([[0, 0, 0],
[0, 1, 0],
[0, 0, 0]])
应该发生的是print(I)返回
tensor([[1, 0, 0],
[0, 1, 0],
[0, 0, 1]])
哪一行代码会将我的张量变成我想要的?它应该只占用一行。
【问题讨论】:
-
尝试更新你的 pytorch。上面的代码适用于我机器上的预期结果。
-
我正在使用torch,我认为可能会有所不同。例如,在这段代码之前我输入
from torch import tensor -
我知道;当我运行这个确切的代码时,我会得到你想要的结果。
-
嗯,你说得对。我在 Python3 中再次尝试,它工作正常。我最初在 Jupyter 中执行此操作时遇到了这个问题,所以也许这就是问题所在。
标签: python-3.x torch tensor