keras是否会自动使用gpu?

Isa*_*Sim 3 gpu model keras tensorflow

似乎它会自动使用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)
Run Code Online (Sandbox Code Playgroud)

然后我定义了一些模型如下

with K.tf.device('/gpu:0'):
    some keras model
Run Code Online (Sandbox Code Playgroud)

很明显它将使用gpu,并且我检查了它是否按预期使用了第一个gpu(索引为0)。

但是后来我把线移开了

with K.tf.device('/gpu:0'):
Run Code Online (Sandbox Code Playgroud)

并重新确定所有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)
Run Code Online (Sandbox Code Playgroud)

还是我想念其他原因吗?

pou*_*yan 5

根据文档,如果存在,TensorFlow将默认使用GPU:

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