我已经使用PyTorch构建了一个在我的本地机器上运行良好的网络。现在我想把它转移到支持GPU / CUDA的机器上来训练更大的数据。但是训练失败了。更确切地说,损失函数的计算失败
在我的代码中,我有一些东西:
loss_function = nn.NLLLoss()
....
def train():
...
loss = loss_function(log_probs, target)
...
在GPU计算机上,脚本停在loss = loss_function(log_probs, target)
。没有错误,没有。刚停下来即使我强制使用CPU而不是GPU。
我使用完全相同的脚本和完全相同的训练数据集。使用print
语句,log_probs
和target
在两台计算机上看起来相同/相似。这一行中的任何内容都不是None
。我根本无法理解为什么两台机器上的行为会有所不同。
答案 0 :(得分:0)
我遵循了Mo Hossny的建议。问题确实是PyTorch的不同版本。工作机器运行PyTorch 0.1.12,在新机器上,我天真地安装了最新版本0.2.0。在新机器上明确安装0.1.12版本后,一切正常。
仍然不是非常用户友好,没有错误或任何其他输出可能暗示这个问题。