keras没有使用gpu但是tensorflow是

时间:2018-10-22 16:35:14

标签: python tensorflow keras gpu cpu

即使tensorflow看起来运行得很好,Keras也没有使用我的GPU。我遵循其他人的建议使用以下方法检查张量流:

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

哪个给

[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 13541243483275802230
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 6694395576
locality {
  bus_id: 1
  links {
  }
}
incarnation: 17715053295272939021
physical_device_desc: "device: 0, name: GeForce GTX 1070, pci bus id: 0000:08:00.0, compute capability: 6.1"
]

到目前为止,一切都很好,但是当我在Keras中指定分类器并对其进行训练时,它的运行速度很快。没有GPU加速的迹象:

classifier.fit(X_train, y_train, batch_size = 10, epochs = 100, verbose=1)

我尝试过:

with tensorflow.device('/gpu:0'):
    classifier.fit(X_train, y_train, batch_size = 10, epochs = 100)

具有相同的结果。 除了速度和明显的CPU使用率外,我不知道该如何判断Keras是否在使用GPU。

我还从tensorflow文档中运行了这个示例,在我的终端中,我可以清楚地看到它使用了GPU。它比上面的keras示例运行得快得多。     导入张量流     #创建一个图形。     a = tensorflow.constant([1.0,2.0,3.0,4.0,5.0,6.0],shape = [2,3],name ='a')     b = tensorflow.constant([1.0,2.0,3.0,4.0,5.0,6.0],shape = [3,2],name ='b')     c = tensorflow.matmul(a,b)     #创建一个将log_device_placement设置为True的会话。     sess =张量流。会话(配置=张量流.ConfigProto(log_device_placement = True))     #运行操作。     打印(sess.run(c))

非常感谢您帮助我们找出Keras为什么看不到我的GPU的帮助

我使用python 3.6.5,tensorflow-gpu 1.11.0(未安装tensorflow),keras 2.2.4。 我需要提及的是,我不得不花一会儿时间才能使用Tensorflow才能使用GPU,但我仍然不知道为什么它突然出现了,但是现在一直如此。我的假设是Keras会自动继承。

A。

2 个答案:

答案 0 :(得分:1)

我不再完全确定最初提出的问题。我认为Keras确实在使用GPU,但是CPU和GPU之间存在很大的瓶颈。当我增加批处理大小时,运行速度明显加快(对于每个时期),这没有多大意义,但似乎表明我在其他地方存在瓶颈。 我不知道该如何调试

答案 1 :(得分:0)

您可以尝试删除keras,然后安装keras-gpu(在anaconda中可用,也许在pip中也可用)

如果要确保使用with tensorflow.device('/gpu:0'):,请在“定义模型时”使用它:

with tensorflow.device('/gpu:0'):

    #blablablabla - layers for functional API model

    classifier = Model(inputs, outputs) #or classifier = Sequential()

    #blablabla - layers for sequential model