我好几天都对这个问题感到困惑......
我的问题是,为什么训练时间与我的生成器的batch_size设置为"1"和"20"之间存在巨大差异.
如果我设置的batch_size为1时,训练时间的1个时期为约180〜200秒.如果我设置的batch_size为20时,训练时间的1个时期为约3000〜3200秒.
然而,这些训练时间之间的这种可怕差异似乎是异常的...,因为它应该是相反的结果:batch_size = 1,训练时间 - > 3000~3200秒.batch_size = 20,训练时间 - > 180~200秒.
我的生成器的输入不是文件路径,而是通过调用"np.load()"已经加载到内存中的numpy数组.所以我认为I/O权衡问题不存在.
我正在使用Keras-2.0.3,我的后端是tensorflow-gpu 1.0.1
我已经看到了这个合并PR的更新,但似乎这个改变不会影响任何东西.(用法与原版相同)
这里的链接是我自定义生成器的要点和fit_generator的一部分.
有人可以帮我解释一下这个问题吗?非常感谢:)
小智 37
使用fit_generator时,每个纪元处理的样本数为batch_size*steps_per_epochs.来自fit_generator的Keras文档:https://keras.io/models/sequential/
steps_per_epoch:在声明一个纪元完成并开始下一个纪元之前从发生器产生的步骤(样本批次)的总数.它通常应等于数据集的唯一样本数除以批量大小.
这与'fit'的行为不同,其中增加batch_size通常会加快速度.
总之,当您使用fit_generator增加batch_size时,如果您希望训练时间保持不变或更低,则应将steps_per_epochs减少相同的因子.
| 归档时间: |
|
| 查看次数: |
31160 次 |
| 最近记录: |