【发布时间】:2019-04-13 14:23:01
【问题描述】:
我最近构建了我的第一个 TensorFlow 模型(从手动编码的 python 转换而来)。我正在使用 tensorflow-gpu,但我只想在训练期间使用 GPU 进行反向传播。对于其他一切我想使用 CPU。我已经看到this article 展示了如何在默认使用 GPU 的系统上强制使用 CPU。但是,您必须指定要强制使用 CPU 的每个操作。相反,我想做相反的事情。我想默认使用 CPU,然后只为我在训练期间执行的反向传播指定 GPU。有没有办法做到这一点?
更新
由于我的模型和场景目前是如何构建的,看起来事情会在 tensorflow 上运行得更慢。我尝试使用仅使用常规(非gpu)张量流的不同环境,它的运行速度仍然比手动编码的python慢得多。我怀疑,其原因在于它是一种强化学习模型,它可以下跳棋(见下文),并在与计算机对手对战时一次做出一个前向道具“预测”。在我设计架构的时候,这是有道理的。但是一次做一个预测的效率不是很高,而且无论 tensorflow 的开销如何,效率都不高。
所以,现在我在想,我需要改变游戏架构,比如同时玩一千场游戏,并批量运行一千个前进道具动作。但是,伙计,现在改变架构充其量是很棘手的。
【问题讨论】:
-
您有这样做的理由吗?如果您希望前向传递仅用于用户(非开发人员)的 CPU,那么只需在用户使用它时启用 CPU。
-
这就是原因。该模型被用于强化学习。具体来说,它玩跳棋。这意味着在玩游戏时(与另一位电脑玩家对战),前向道具被用来进行单次移动(即单次预测)。因此,对于每一步,游戏本身(使用 Python 和 NumPy 构建)都需要提供 NumPy 输入数组,然后必须将其复制到 GPU 用于前向道具,然后再复制回 NumPy 到游戏中。每一步的副本都非常昂贵,实际上使实际游戏的运行速度比 CPU 上手动编码的 python 慢得多。
标签: python tensorflow