python - 除了反向传播之外,我想在 CPU 上使用 Tensorflow

标签 python tensorflow

我最近构建了我的第一个 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/

相关文章:

python - 如何使用 Python Scrapy 模块列出我网站上的所有 URL?

Python - 如何合并和交换两个列表的每个第 n 个元素

python - TensorFlow 数据集的意外维度

python - 设置代理让keras/tensorflow下载需要的json

python - 让 TensorFlow 使用由自定义 CUDA 例程即时生成的训练数据

object - 如何在 tensorflow object_detection 中检查训练/评估性能

python - 使用 Tensorflow 2.0 模型子类化访问层输入/输出

python - 在 pythonanywhere 免费帐户中使用 pdb 调试器

python - 如何在 django 表单中设置自定义 HTML 属性?

python - 如果字符串不在一个或多个列表中则引发错误