如何检查Keras TensorFlow后端是GPU版本还是CPU版本?

66

我知道在安装tensorflow时,你要么安装GPU版本,要么安装CPU版本。如何检查已安装哪个版本(我使用linux)?

如果已安装GPU版本,当无法使用GPU时,是否会自动切换到CPU,还是会报错?如果GPU可用,是否需要设置特定字段或值以确保其在GPU上运行?


@SalvadorDali 我已经尝试了那个问题的答案,但它没有打印出任何东西。而且,它也没有回答我的问题:如果安装了GPU版本,如果GPU不可用,它会自动运行在CPU上还是会抛出错误?如果GPU可用,是否有特定的字段或值需要设置以确保它在GPU上运行? - matchifang
但它没有打印出任何东西,这怎么可能?你尝试过我的答案吗?它要么打印出一些东西,要么失败,而答案解释了每个步骤的含义。基本上,你在评论中提出的两个问题都在那里得到了回答。 - Salvador Dali
@SalvadorDali,抱歉。我尝试了你的代码,它可以运行,并显示正在使用CPU。然而,我如何检查我所拥有的tensorflow是GPU版本还是CPU版本呢? - matchifang
2个回答

77

你也可以使用Keras后端函数进行检查:

from keras import backend as K
K.tensorflow_backend._get_available_gpus()

我在Keras (2.1.1)上进行了测试。


1
在Ubuntu 16.04的命令行会话中运行这个程序是可以的,但它不会提示输入其他命令,直接运行tensorflow也是一样,然后我就得重新启动终端。你有什么想法是什么原因吗? - Kostas Mouratidis
3
以上命令的输出应该是什么? - Nitin
14
不适用于TF 2.0。 - Shital Shah
4
对于TF 2.0版本: from tensorflow.python.keras import backend as K @ShitalShah - Elior B.Y.
2
补充上面的评论,对于TF 2.0, from tensorflow.python.keras import backend as K 后跟 K._get_available_gpus() - Anirudh Ajith
显示剩余3条评论

30
根据文档说明。

如果您正在使用TensorFlow或CNTK后端,则在检测到任何可用GPU时,您的代码将自动在GPU上运行。

您可以通过“ - ”检查tensorflow使用的所有设备。

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

同样建议参考这个答案

import tensorflow as tf
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

这将打印出你的tensorflow是使用CPU还是GPU后端。如果您在jupyter笔记本中运行此命令,请查看从中启动笔记本的控制台。

如果您怀疑是否已安装了tensorflow gpu版本,则可以通过pip安装gpu版本。

pip install tensorflow-gpu


15
我已安装了TensorFlow GPU,但Keras无法使用它,该怎么办? - kRazzy R
1
你是否遵循官方指南 - https://keras.io/backend/ ? - markroxor
如果您已经安装了tensorflow-gpu,但Keras没有识别它,那么很可能是CUDA库未被找到。您需要CUDA库路径和bin路径(用于ptxas)才能有效地使用Keras/TF的GPU。 - Gearoid Murphy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接