-2

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

cuda 8.0
keras 2.0.5
tensorflow-gpu 1.2.0
Titan X Pascal

有谁有想法吗?

4

2 回答 2

1

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

于 2017-08-07T05:49:57.310 回答
0

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

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

于 2017-07-18T08:33:39.643 回答