【问题标题】:How to use GPU to run Keras Model.Predict()如何使用 GPU 运行 Keras Model.Predict()
【发布时间】:2020-10-26 14:31:31
【问题描述】:

使用 Tensorflow CIFAR CNN demonstration,我验证了我的 TF 正确地使用了我的 GPU。 TF 使用 GPU 运行 model.fit(),它在 HWiNFO64 中的使用率约为 50%。但是,如果我随后将此单元格添加到笔记本中,它使用模型来预测测试集中图像的标签:

import numpy as np
for img in test_images:
    prediction = model.predict(np.expand_dims(img, axis=0)) # Here
    print(class_names[np.argmax(prediction)])

我看到只有 1% 的 GPU 使用率(由 Chrome 和其他进程使用)。有没有办法让我在 GPU 上运行 model.predict(),或者有没有其他方法可以让我为单个输入提供模型输出?

【问题讨论】:

  • 它在GPU上运行,问题是这个for循环效率很低,为什么不做一个预测调用将所有图像作为一个numpy数组传递?
  • 谢谢,我试试看。但是,还有没有办法通过一次调用使其更高效?
  • 不,不是真的,通过一次调用,您实际上使用了 1% 的 GPU
  • 好的,谢谢!可惜我不能将评论标记为答案:(

标签: python tensorflow keras tensorflow2.0


【解决方案1】:

您的代码在 GPU 上运行,认为 GPU 利用率可以告诉您代码是否在 GPU 上运行是一种误解。

问题是对每个图像执行一次predict 调用效率非常低,因为几乎无法在 GPU 上执行并行性,如果您传递整个图像数组,那么它将增加 GPU 利用率,因为可以提供批处理到 GPU 并并行处理每个图像。

GPU 仅加速特定工作负载,因此您唯一的选择是在调用 predict 时使用更多图像。

【讨论】:

    猜你喜欢
    • 2020-11-09
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 2018-02-05
    • 2021-06-13
    • 2021-06-04
    • 1970-01-01
    相关资源
    最近更新 更多