当前位置: 首页 > 面试题库 >

如何在keras fit_generator()中定义max_queue_size,worker和use_multiprocessing?

何涵衍
2023-03-14
问题内容

我正在使用GPU版本的keras在经过预训练的网络上应用转移学习。我不知道如何来定义参数 max_queue_size
workersuse_multiprocessing
。如果我更改这些参数(主要是为了加快学习速度),则不确定是否每个时期仍能看到所有数据。

max_queue_size

  • 内部训练队列的最大大小,用于“预缓存”生成器中的样本

  • 问题: 这是否指的是在CPU上准备多少批次?有什么关系workers?如何最佳定义?

workers

  • 并行生成批处理的线程数。批处理在CPU上并行计算,然后即时传递到GPU进行神经网络计算

  • 问题: 如何找出我的CPU可以/应该并行生成多少个批次?

use_multiprocessing

  • 是否使用基于进程的线程

  • 问题: 如果更改,是否必须将此参数设置为true workers?它与CPU使用率有关吗?

相关问题 可以在这里找到:

  • model.fit_generator()参数的详细说明:队列大小,工作程序和use_multiprocessing
  • 工人在Keras中的fit_generator中是什么意思?

  • “ model.fit_generator”中使用的参数“ max_q_size”是什么?

  • 如何在Keras中使用数据生成器的详细示例。

我使用fit_generator()如下:

    history = model.fit_generator(generator=trainGenerator,
                                  steps_per_epoch=trainGenerator.samples//nBatches,     # total number of steps (batches of samples)
                                  epochs=nEpochs,                   # number of epochs to train the model
                                  verbose=2,                        # verbosity mode. 0 = silent, 1 = progress bar, 2 = one line per epoch
                                  callbacks=callback,               # keras.callbacks.Callback instances to apply during training
                                  validation_data=valGenerator,     # generator or tuple on which to evaluate the loss and any model metrics at the end of each epoch
                                  validation_steps=
                                  valGenerator.samples//nBatches,   # number of steps (batches of samples) to yield from validation_data generator before stopping at the end of every epoch
                                  class_weight=classWeights,                # optional dictionary mapping class indices (integers) to a weight (float) value, used for weighting the loss function
                                  max_queue_size=10,                # maximum size for the generator queue
                                  workers=1,                        # maximum number of processes to spin up when using process-based threading
                                  use_multiprocessing=False,        # whether to use process-based threading
                                  shuffle=True,                     # whether to shuffle the order of the batches at the beginning of each epoch
                                  initial_epoch=0)

我的机器的规格是:

CPU : 2xXeon E5-2260 2.6 GHz
Cores: 10
Graphic card: Titan X, Maxwell, GM200
RAM: 128 GB
HDD: 4TB
SSD: 512 GB

问题答案:

Q_0:

问题:这是否指的是在CPU上准备多少批次?它与工人有什么关系?如何最佳定义?

从发布的链接中,您可以了解到CPU一直在创建批处理,直到队列达到最大队列大小或到达停止为止。您需要准备好批处理以供GPU“使用”,以使GPU不必等待CPU。队列大小的理想值是使其足够大,以使您的GPU始终在接近最大值的情况下运行,而不必等待CPU准备新批处理。

Q_1:

问题:如何找出我的CPU可以/应该并行生成多少个批次?

如果您发现您的GPU处于空闲状态并正在等待批处理,请尝试增加工作人员数量,也许还增加队列大小。

Q_2:

如果更改工作人员,是否必须将此参数设置为true?它与CPU使用率有关吗?

这是将其设置为True或时发生的情况的实用分析False。这里是一个建议,将其设置为False防止冻结(在我的设置True工作正常不结冰)。也许其他人可以增进我们对该主题的理解。

综上所述:

尝试不进行顺序设置,尝试使CPU为GPU提供足够的数据。

另外:您可以(应该?)在下一次提出几个问题,以便于回答。



 类似资料:
  • 问题内容: 我对groovy的了解并没有超出我对Jenkinsfiles的了解。我试图弄清楚是否有可能在Jenkinsfile中定义一个映射,然后可以以“ for循环”方式应用该映射。 我有这些变量: 我的Jenkinsfile中有一个如下所示的: 有没有办法为每个配对做一个舞台?我的尝试还没有运气。 问题答案: Jenkins文档中有一些类似的用户提交的示例。 这样的事情应该起作用:

  • 问题内容: 我有一个现有的Web应用程序,我希望将其转换为不带Servlet 3.0的web.xml。我设法使其正常工作,但是web.xml中有2个标记,但我仍然不知道在无web.xml的环境中的等效代码。 任何帮助表示赞赏 问题答案: 在Servlets 3.0中,在许多情况下不需要web.xml,但是有时它是必需的或仅是有用的。您的情况只是其中之一- 没有特殊的注释来定义欢迎文件列表或错误页面

  • 本文向大家介绍如何在PostgreSQL中定义和查询json列?,包括了如何在PostgreSQL中定义和查询json列?的使用技巧和注意事项,需要的朋友参考一下 在PostgreSQL中定义JSON列的能力使其功能非常强大,并且可以帮助PostgreSQL用户体验SQL和NoSQL的两全其美。 创建JSON列非常简单。您只需要像创建其他列一样创建/定义它,然后使用数据类型作为JSON。 让我们在

  • 问题内容: 很简单,我正在学习Python,但是找不到可以告诉我如何编写以下内容的参考: 后来: 这是一个具有以下属性的班级团队:名称/徽标/成员 编辑 经过几次尝试,我得到了: 后来 这是Python方式吗?感觉很奇怪(当然来自强类型语言)。 问题答案: 在Python中,通常不编写getter和setter,除非您确实为它们提供了一个简单的实现(此时使用属性描述符)。

  • 我正在使用IText7从html字符串生成pdf。现在,我需要对段落应用自定义颜色和自定义字体或字体系列。 如何使用Itext7实现这一点? 谢谢