gpt4 book ai didi

python - 如何在 keras fit_generator() 中定义 max_queue_size、workers 和 use_multiprocessing?

转载 作者:太空狗 更新时间:2023-10-29 17:48:20 26 4
gpt4 key购买 nike

我正在使用 GPU 版本的 keras 在预训练网络上应用迁移学习。我不明白如何定义参数 max_queue_sizeworkersuse_multiprocessing 。如果我更改这些参数(主要是为了加快学习速度),我不确定每个时期是否仍然可以看到所有数据。

max_queue_size:

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

  • 问题:这是指在 CPU 上准备了多少批处理?它与 workers 有什么关系?如何最佳定义?

worker :

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

  • 问题:如何确定我的 CPU 可以/应该并行生成多少批处理?

use_multiprocessing:

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

  • 问题:如果我更改 workers,是否必须将此参数设置为 true?跟CPU占用有关系吗?

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

我正在使用 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:

Question: Does this refer to how many batches are prepared on CPU? How is it related to workers? How to define it optimally?

来自link你发布了,你可以了解到你的 CPU 一直在创建批处理,直到队列达到最大队列大小或到达停止点。您希望为您的 GPU 准备好批处理,以便 GPU 不必等待 CPU。队列大小的理想值是使其足够大,使您的 GPU 始终在最大值附近运行,而不必等待 CPU 准备新的批处理。

问题_1:

Question: How do I find out how many batches my CPU can/should generate in parallel?

如果您发现您的 GPU 处于空闲状态并等待批处理,请尝试增加 worker 数量,也可能增加队列大小。

问题_2:

Do I have to set this parameter to true if I change workers? Does it relate to CPU usage?

Here是对将其设置为 TrueFalse 时发生的情况的实际分析。 Here建议将其设置为 False 以防止卡住(在我的设置中 True 可以正常工作而不会卡住)。也许其他人可以增加我们对该主题的理解。

总结:

尽量不要顺序设置,尽量让CPU给GPU提供足够的数据。

另外:下次您可以(应该?)提出几个问题,以便更容易回答它们。

关于python - 如何在 keras fit_generator() 中定义 max_queue_size、workers 和 use_multiprocessing?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55531427/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com