Pytorch,无法获得 <class 'torch.Tensor'> 的代表

ben*_*ene 6 mse pytorch

我正在 PyTorch 中实现一些 RL,并且不得不编写我自己的 mse_loss 函数(我在 Stackoverflow 上找到了它;))。损失函数为:

def mse_loss(input_, target_):    
    return torch.sum(
        (input_ - target_) * (input_ - target_)) / input_.data.nelement()
Run Code Online (Sandbox Code Playgroud)

现在,在我的训练循环中,第一个输入类似于:

tensor([-1.7610e+10]), tensor([-6.5097e+10])
Run Code Online (Sandbox Code Playgroud)

输入张量

有了这个输入,我会得到错误:

Unable to get repr for <class 'torch.Tensor'>
Run Code Online (Sandbox Code Playgroud)

计算a = (input_ - target_)工作正常,而b = a * a分别b = torch.pow(a, 2)会因上述错误而失败。

有谁知道解决这个问题?

非常感谢!

更新:我刚刚尝试使用torch.nn.functional.mse_loss它会导致相同的错误..

小智 1

您使用的是 GPU 吗?

我遇到了类似的问题(但我正在使用收集操作),当我将张量移至 CPU 时,我可以获得正确的错误消息。我修复了错误,切换回 GPU,一切正常。当来自 GPU 内部的错误时,pytorch 可能无法输出正确的错误。