【问题标题】:result incorrect when running tensorflow-gpu on CPU在 CPU 上运行 tensorflow-gpu 时结果不正确
【发布时间】:2017-07-18 08:17:59
【问题描述】:

在我的项目中,我有几个由 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

有人知道吗?

【问题讨论】:

  • 请给我们一些可以运行的代码。 IE。具有相同问题并且可以按原样运行的简化最小测试用例。

标签: tensorflow deep-learning keras tensorflow-gpu


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我使用 keras 中的 ModelCheckpoint() 函数保存我的模型,并在使用 tensorflow 作为后端时通过 keras.engine.training.Model 的函数 load_weights() 进行恢复。我不知道在哪里可以设置 clear_devices=True?你有什么主意吗?非常感谢!
    • 对不起,我对 keras 了解不多。我的建议是针对 tensorflow 的。
    • 还是谢谢你,看来我们是在正确的道路上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-06
    • 2019-12-11
    • 2014-08-18
    • 1970-01-01
    • 2015-07-24
    • 2016-07-16
    相关资源
    最近更新 更多