首页 文章

keras没有使用gpu但是tensorflow是

提问于
浏览
-1

Keras没有使用我的GPU,即使tensorflow似乎运行得很好 . 我跟随其他人建议检查tensorflow:

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)

结果相同 . 我不知道如何判断Keras是否使用GPU除了速度和明显的CPU使用率 .

我也从tensorflow文档中运行了这个例子,在我的终端中我可以清楚地看到它使用了GPU . 它比上面的keras例子运行得快得多 . import tensorflow#创建图表 . 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 = tensorflow.Session(config = tensorflow.ConfigProto(log_device_placement = True))#运行op . 打印(sess.run(c))的

我非常感谢您帮助我找到为什么Keras无法看到我的GPU

我使用python 3.6.5,tensorflow-gpu 1.11.0(未安装tensorflow),keras 2.2.4 . 我需要提一下,我必须摆弄一段时间才能获得使用GPU的张量流,但我仍然不知道它为什么会突然发生,但现在却一直如此 . 我的假设是Keras会自动继承这一点 .

一个 .

2 回答

  • 1

    您可以尝试删除您的keras并安装keras-gpu(可在anaconda中使用,也可能在pip中)

    如果您想确保使用 with tensorflow.device('/gpu:0'): ,请使用"when defining the model":

    with tensorflow.device('/gpu:0'):
    
        #blablablabla - layers for functional API model
    
        classifier = Model(inputs, outputs) #or classifier = Sequential()
    
        #blablabla - layers for sequential model
    
  • 0

    我不完全确定我原先陈述的问题 . 我认为Keras确实在使用GPU,但我在CPU和GPU之间存在严重的瓶颈 . 当我增加批量大小时,事情运行得更快(对于每个时代),这没有多大意义但似乎表明我在其他地方有瓶颈 . 我不知道如何调试这个

相关问题