我最近构建了我的第一个 TensorFlow 模型(从手工编码的 Python 转换而来)。我正在使用tensorflow-gpu,但我只想在训练期间使用GPU进行反向传播。对于其他一切,我想使用 CPU。我见过this article展示如何在默认情况下使用 GPU 的系统上强制使用 CPU。但是,您必须指定要强制使用 CPU 的每个操作。相反,我想做相反的事情。我想默认使用 CPU,但随后仅为我在训练期间执行的反向传播指定 GPU。有办法做到这一点吗?
更新
由于我目前的模型和场景的构建方式,看起来在 tensorflow 上运行速度会变慢。我尝试使用仅使用常规(非 GPU) tensorflow 的不同环境,但它的运行速度仍然比手动编码的 python 慢得多。我怀疑其原因是它是一种强化学习模型,可以玩西洋跳棋(见下文),并在与计算机对手对战时一次进行一个前向 Prop “预测”。在我设计架构时,这是有道理的。但是一次进行一个预测的效率不是很高,而且对于 tensorflow 来说,无论有多少开销,效率都较低。
所以,现在我想我需要改变游戏架构来同时玩一千个游戏并批量运行一千个向前的 Prop 移动。但是,伙计,现在改变架构充其量也是很棘手的。
最佳答案
TensorFlow 允许您使用 tf.device
上下文管理器控制设备放置。
例如,要在 CPU 上运行一些代码
with tf.device('cpu:0'):
<your code goes here>
与强制 GPU 使用类似。
与其总是在 CPU 上运行前向传递,不如制作两个图表:一个是在推出策略时使用的仅前向 cpu 图表,另一个是仅 GPU 前向和后向图表训练时使用。
关于python - 除了反向传播之外,我想在 CPU 上使用 Tensorflow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53235485/