将 keras fit/fit_generator 与 max_queue_size、workers 和 use_multiprocessing 一起使用

Mat*_*hew 5 python deep-learning keras tensorflow

我对如何使用max_queue_size,workers感到use_multiprocessing困惑Keras 文档

有人可以举个例子,说明如果您有的话,您将如何使用它们

  • 1xGPU(Nvidia Quadro p1000)
  • 6核CPU,12个逻辑处理器

以下是我根据对这三个字段的不科学猜测来使用它的方法。

classifier.fit_generator(training_set,
                         steps_per_epoch = 8000,
                         epochs = 25,
                         validation_data = test_set,
                         validation_steps = 2000/32,
                         max_queue_size = 10,
                         use_multiprocessing = False,
                         workers=1)
Run Code Online (Sandbox Code Playgroud)

Tim*_*lin 5

MAX_QUEUE_SIZE --> 如果在监控 GPU 使用情况时 GPU 处于空闲状态(等待批次),请增加此参数。理想情况下,GPU应尽可能少地等待 CPU 获取数据。等待批次意味着GPU 内存消耗不会处于恒定峰值(例如 95%)。举个例子:当您监控 GPU 内存使用情况时,您会看到很大的峰值(5% 使用率、95% 使用率、5% 使用率、95% 使用率)。95%和5%使用率之间的time_difference实际上是GPU空闲的时间。如果存在此类使用差异,请增加此queue_size。

USE_MULTIPROCESSING --> 可能会在 Windows 上生成错误(对我来说,这没有发生,但我看到其他帖子,其中由于多处理问题,它可能会冻结),在基于 Linux 的系统上运行良好。如果您想使用多个进程将数据获取到 CPU,请将此设置为 true。例如

 ..,use_multiprocessing = True, workers = 4)
Run Code Online (Sandbox Code Playgroud)

根据我的经验,这些参数一起发挥作用;即,如果您想提高速度方面的性能,您可以尝试提高所有这些。