将keras fit_generator与max_queue_size,worker和use_multiprocessing一起使用

时间:2019-11-13 10:42:00

标签: python tensorflow keras

我对如何使用Keras Documentation中的max_queue_sizeworkersuse_multiprocessing感到困惑

有人可以请您举例说明如果有的话如何使用他们

  • 1xGPU(Nvidia Quadro p1000)
  • 具有12个逻辑处理器的6个核心CPU

这是我根据这三个领域的不科学猜测使用它的方式。

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)

1 个答案:

答案 0 :(得分:0)

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)

根据我的经验,这些参数可以协同工作;也就是说,如果您想提高速度方面的表现,可以尝试提高所有这些。