如何使用 GPU 运行 Keras Model.Predict()
How to use GPU to run Keras Model.Predict()
使用 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 上是 运行,认为 GPU 利用率可以告诉您代码在 GPU 上是否是 运行 的想法是错误的。
问题是对每个图像执行一次 predict
调用效率非常低,因为在 GPU 上几乎无法执行并行操作,如果传递一整组图像,那么它会增加 GPU 利用率,因为可以将批次提供给 GPU 并并行处理每个图像。
GPU 只能加速特定的工作负载,因此您唯一的选择是在调用 predict
时使用更多图像。
使用 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 上是 运行,认为 GPU 利用率可以告诉您代码在 GPU 上是否是 运行 的想法是错误的。
问题是对每个图像执行一次 predict
调用效率非常低,因为在 GPU 上几乎无法执行并行操作,如果传递一整组图像,那么它会增加 GPU 利用率,因为可以将批次提供给 GPU 并并行处理每个图像。
GPU 只能加速特定的工作负载,因此您唯一的选择是在调用 predict
时使用更多图像。