我尝试做的是重新训练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。减少我磁盘上图像的大小似乎摆脱了瓶颈
答案 0 :(得分:0)
将批量大小增加到512,批量大小为30.
答案 1 :(得分:0)
新的TF.data.dataset API非常适合构建以异步方式将数据提供给模型的pieplines。因此,在计算图形时,管道将预取在下一个图形执行周期开始时准备好的数据。使用tf.estimators,您也可以运行带有TF.data.dataset管道的keras模型。一个例子:
答案 2 :(得分:0)
我解决了!似乎问题是我的GPU仅在很短的时间内使用,原因是瓶颈实际上是在图像中加载。我将我的图像存储为3000x4000像素jpgs,即使我将其缩小到150x150或有时64x64用于CNN。减少我磁盘上图像的大小似乎摆脱了瓶颈