Keras会自动使用GPU吗?

4

看起来它会自动使用GPU,但我不知道为什么。

首先,我声明如下:

tf_config = tf.ConfigProto( allow_soft_placement=True )
tf_config.gpu_options.allow_growth = True
sess = tf.Session(config=tf_config) 
keras.backend.set_session(sess)

然后我定义了以下模型:
with K.tf.device('/gpu:0'):
    some keras model

显然,它将使用GPU。我检查了一下,它使用了第一个GPU(索引为0),就像我预期的那样。

但是后来,我删除了这行代码。

with K.tf.device('/gpu:0'):

我重新缩进了所有的keras模型。我运行了代码,但它似乎仍然使用第一个gpu(索引为0)。

在我的ubuntu系统上,我使用nvidia-smi命令来检查gpu内存使用情况,并在我的windows系统上查看了进程管理器。

两者都显示了gpu内存及其使用情况。

据我所知,如果我没有将gpu留给tensorflow模型,它就不会使用gpu。但是对于Keras,它似乎会自动使用gpu……这是因为我运行了代码吗?

tf_config = tf.ConfigProto( allow_soft_placement=True )
tf_config.gpu_options.allow_growth = True
sess = tf.Session(config=tf_config) 
keras.backend.set_session(sess)

还是有其他我没有想到的原因吗?

1
TensorFlow 默认情况下会使用可用的 GPU。 - Dr. Snoopy
1个回答

9
根据文档所述,如果存在GPU,则TensorFlow默认使用GPU:

如果一个TensorFlow操作既有CPU实现又有GPU实现,当将操作分配给设备时,GPU设备将优先选择。例如,matmul具有CPU和GPU内核。在具有cpu:0和gpu:0设备的系统上,将选择gpu:0来运行


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