我正在使用 keras 的 GPU 版本在预先训练的网络上应用转移学习。我不知道如何来定义参数max_queue_size,workers和use_multiprocessing。如果我更改这些参数(主要是为了加速学习),我不确定每个时期是否仍然可以看到所有数据。max_queue_size:用于“预缓存”来自生成器的样本的内部训练队列的最大大小问:是指CPU上准备了多少batch?它与 有什么关系workers?如何最佳定义?workers:并行生成批处理的线程数。批处理在 CPU 上并行计算,并即时传递到 GPU 进行神经网络计算问题:我如何知道我的 CPU 可以/应该并行生成多少批次?use_multiprocessing:是否使用基于进程的线程问题:如果我更改,是否必须将此参数设置为 true workers?它与CPU使用率有关吗?
1 回答
精慕HU
TA贡献1845条经验 获得超8个赞
Q_0:
问:是指CPU上准备了多少batch?它与工人有什么关系?如何最佳定义?
从您发布的链接中,您可以了解到您的 CPU 一直在创建批处理,直到队列达到最大队列大小或到达停止点。您希望为 GPU 准备好批次以“接受”,以便 GPU 不必等待 CPU。队列大小的理想值是使其足够大,以便您的 GPU 始终接近最大值运行,而不必等待 CPU 准备新批次。
Q_1:
问题:我如何知道我的 CPU 可以/应该并行生成多少批次?
如果您看到您的 GPU 处于空闲状态并等待批处理,请尝试增加工作人员的数量,也许还可以增加队列大小。
Q_2:
如果我更换工人,是否必须将此参数设置为 true?它与CPU使用率有关吗?
以下是对将其设置为True
或时会发生什么的实际分析False
。这是将其设置False
为防止冻结的建议(在我的设置中True
没有冻结就可以正常工作)。也许其他人可以增加我们对这个话题的理解。
总之:
尽量不要有顺序的设置,尽量让 CPU 为 GPU 提供足够的数据。
另外:下次您可以(应该?)创建几个问题,以便更容易回答。
添加回答
举报
0/150
提交
取消