运行 tensorflow-gpu 在 CPU 上时结果不正确

result incorrect when running tensorflow-gpu on CPU

在我的项目中,我有几个在GPU上用keras训练的模型(后端是tensorflow-gpu),当我在GPU上测试时,结果是正确的。但是当我在 CPU(set CUDA_VISIBLE_DEVICES=) 上测试时,model.predict 的 return 都是 NAN。我的环境如下:

cuda 8.0
keras 2.0.5
tensorflow-gpu 1.2.0
Titan X Pascal

有人知道吗?

当您保存模型时,它会记录训练它的设备。默认情况下,该模型会在此设备上恢复。在你的情况下,我想你的网络已经在 GPU 上训练过。

要删除此信息,您需要在恢复元图时指定 clear_devices=True。然后你可以把网放在适合你的地方。

终于找到原因了。在我训练的模型中有几个神经元权重是 NAN。而在计算这样一个NAN神经元的输出时,GPU的结果会是零,而CPU的结果会是NAN。