5

我正在使用 keras-rl 使用 D-DQN 算法训练我的网络。我正在 GPU 上运行我的训练,该model.fit_generator()函数允许在 GPU 进行反向传播时将数据发送到 GPU。与 GPU 处理数据的速度相比,我怀疑数据的生成速度太慢了。

在生成数据时,按照 D-DQN 算法的说明,我必须首先用我的模型预测 Q 值,然后将这些值用于反向传播。如果使用 GPU 来运行这些预测,则意味着它们正在破坏我的数据流(我希望反向传播尽可能频繁地运行)。

有没有办法可以指定在哪个设备上运行特定操作?在某种程度上,我可以在 CPU 上运行预测,在 GPU 上运行反向传播。

4

2 回答 2

7

也许您可以在训练结束时保存模型。os.environ["CUDA_VISIBLE_DEVICES"]="-1"然后在导入任何 keras 或 tensorflow 内容之前启动另一个 python 文件并编写。现在您应该能够加载模型并使用 CPU 进行预测。

于 2018-07-28T09:51:05.073 回答
2

如果没有看到您的代码,很难正确回答您的问题。

下面的代码显示了如何列出可用设备并强制 tensorflow 使用特定设备。

def get_available_devices():
    local_device_protos = device_lib.list_local_devices()
    return [x.name for x in local_device_protos]

get_available_devices()

with tf.device('/gpu:0'):
    //Do GPU stuff here
with tf.device('/cpu:0'):
    //Do CPU stuff here
于 2018-07-25T12:03:04.590 回答