【发布时间】:2017-09-29 02:37:56
【问题描述】:
我已经用 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。我根本不明白为什么两台机器上的行为会有所不同。
【问题讨论】:
-
1.我会检查 GPU 内存分配。 2. 如果这不是问题,请检查驱动程序。 3. 第三种选择可能是两个 pytorch 实现的后端不同。可能只有其中一个在使用 CUDNN。