GPU未充分利用CNN培训

时间:2018-04-18 08:26:15

标签: tensorflow keras

我尝试做的是重新训练VGG16,使用带有Tensorflow后端的Keras识别新类型的图像数据。

但是训练过程对我来说似乎很慢,在检查了我在任务管理器中的GPU性能后,我觉得我的GPU几乎没有被利用。

这是我的代码:https://hastebin.com/pepozayutu.py

这是我的控制台中的输出:https://hastebin.com/uhonugenej.md

这就是我的任务经理在培训期间的样子:https://imgur.com/a/jRJ66

正如你所看到的GPU几乎没有做任何事情,为什么我的训练如此缓慢?尝试不同的设置令人痛苦,因为每次训练需要20-60分钟,具体取决于时代的数量。

我安装了Tensorflow-gpu 1.7.0,cuDNN 7.0.5,CUDA 9.0和Keras 2.1.5。我正在运行NVIDIA GeForce 940MX

编辑:我解决了!似乎问题是我的GPU仅在很短的时间内使用,原因是瓶颈实际上是在图像中加载。我将我的图像存储为3000x4000像素jpgs,即使我将其缩小到150x150或有时64x64用于CNN。减少我磁盘上图像的大小似乎摆脱了瓶颈

3 个答案:

答案 0 :(得分:0)

将批量大小增加到512,批量大小为30.

答案 1 :(得分:0)

新的TF.data.dataset API非常适合构建以异步方式将数据提供给模型的pieplines。因此,在计算图形时,管道将预取在下一个图形执行周期开始时准备好的数据。使用tf.estimators,您也可以运行带有TF.data.dataset管道的keras模型。一个例子:

https://www.dlology.com/blog/an-easy-guide-to-build-new-tensorflow-datasets-and-estimator-with-keras-model/

答案 2 :(得分:0)

我解决了!似乎问题是我的GPU仅在很短的时间内使用,原因是瓶颈实际上是在图像中加载。我将我的图像存储为3000x4000像素jpgs,即使我将其缩小到150x150或有时64x64用于CNN。减少我磁盘上图像的大小似乎摆脱了瓶颈