keras是否会自动使用gpu?

时间:2018-12-26 01:09:01

标签: tensorflow model keras gpu

似乎它会自动使用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内存及其用法。

据我所知,如果我不将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 个答案:

答案 0 :(得分:4)

根据documentation,TensorFlow将在默认情况下使用GPU:

  

如果TensorFlow操作同时具有CPU和GPU实施,则将操作分配给设备后, GPU设备将被赋予优先级。例如,matmul同时具有CPU和GPU内核。 在具有设备cpu:0和gpu:0的系统上,将选择gpu:0来运行