数据可能不适合GPU内存(包括激活和渐变),其中一个使用迷你批次,并且它可能不适合RAM,其中一个使用fit_generator
。或者至少,后者是我想在此验证的假设。
Keras是否应用生产者 - 消费者策略首先将生成器的生成元素加载到RAM中,直到(或不是)queue_size
被填充,然后在批量弹出以训练网络时继续填充它?该文档提到,这对于使用CPU进行数据扩充和使用GPU进行培训非常有用。是使用这种生产者 - 消费者并行性来将数据从磁盘加载到RAM中的用例,因为它不能同时适用于RAM,也是有效的吗?我的数据有100k CT扫描,显然不适合RAM。
总而言之,fit_generator
仅用于并行化数据预处理和训练,还是(合理地)用于并行化数据加载(到RAM)和训练?或者后者就像用锤子在墙上拧螺丝一样?
是的,您可以使用它来并行化数据加载,这是常见的用例之一,例如在使用ImageNet大小的数据集进行培训时。
但请注意,如果您并行化太多(工作人员太多),那么通常IO会成为瓶颈。