【问题标题】:Slicing in Pytorch gives a wrong answerPytorch 中的切片给出了错误的答案
【发布时间】:2020-10-29 14:18:43
【问题描述】:

当我运行以下几行时,我看到了以下我无法解释的结果。我希望看到 [1., 2.] 作为对 a*x[:,0] 的答案,而且确实如果我在 numpy 中做同样的事情,我会得到那个答案,但我不知道为什么 pytorch 给了我不同的答案答案:

>>> x = torch.tensor([[1,0],[1,1]]) 
>>> a = torch.tensor([1.,2.]) 
>>> a*x 
tensor([[1., 0.], [1., 2.]]) 
>>> a*x[:,0] 
tensor([1., nan])

【问题讨论】:

  • 我无法使用 1.2.0 版重现此内容。也许它与数据类型有关。在 1.2.0 版本中,您必须将 x 显式转换为浮点张量(以前为 long)。我以前在类似情况下也有过奇怪的行为。所以我认为这只是某种错误。因此,您似乎使用的是旧版本,如果您想摆脱这个问题,更新您的 pytorch 可能会有所帮助。

标签: python pytorch


【解决方案1】:

确认@blue-phoenox:在 1.1 和 1.2 中试用了您的示例。您将收到以下错误:

RuntimeError: expected backend CPU and dtype Float but got backend CPU and dtype Long

此外,切片到一维张量时要小心,因为您将从形状 [2, 2] 变为 [2] 而不是 [1, 2] ,这可能是也可能不是。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-17
    • 1970-01-01
    • 2020-09-03
    • 2023-01-30
    相关资源
    最近更新 更多