mrg*_*oom 10 python multithreading multiprocessing deep-learning keras
Keras关于keras.utils.Sequence 的信息很少,实际上我想从中派生批处理生成器的唯一原因keras.utils.Sequence是我不想自己编写带有队列的线程池,但我不确定它是否是最佳选择我的任务,这是我的问题:
__len__如果我有随机生成器并且我没有任何带有样本的预定义“列表”,应该返回什么。keras.utils.Sequence
应该如何与 一起使用fit_generator,我主要对max_queue_size, workers, use_multiprocessing,shuffle
参数感兴趣
。Dan*_*ler 14
len序列中批次。 steps_per_epoch=len(generator)或steps_per_epoch=None。
max_queue_size: 任何值,这将加载将在内存中等待的批次,直到轮到它们进入模型 workers:任何值,这将是将加载批次的并行“线程”的数量(如果名称不准确,请原谅我) use_multiprocessing: 这个我不知道。对我来说没有必要,我唯一一次尝试它的时候有足够的错误来冻结我的机器 shuffle:来自文档:布尔值。是否在每个 epoch 开始时打乱批次的顺序。仅与 Sequence (keras.utils.Sequence) 的实例一起使用。当steps_per_epoch 不是None 时无效。与Sequence普通发电机相比的优势:
使用序列,可以跟踪哪些批次已经被使用,哪些批次被发送到哪个线程进行加载,并且永远不会发生冲突,因为它是基于索引的。
使用生成器,并行处理将无法跟踪哪些批次已经被使用,因为线程不会相互通信,并且除了按顺序批量生产之外别无选择。
生成器和序列在循环中的优势
在一个循环中,您将“等待批量加载”、“等待模型训练”、“等待批量加载”、“等待模型训练”。
和 fit_generator,将在“模型训练时”加载批次,您可以同时进行两件事。
对于非常简单的生成器,不会有太大的影响。对于复杂的生成器、增强器、大图像加载器等,生成时间非常重要,可能会严重影响您的速度。
| 归档时间: |
|
| 查看次数: |
4380 次 |
| 最近记录: |