2017-05-04 165 views
1

嗨,我不明白keras fit_generator文档。keras中的fit_generator:其中是指定的batch_size?

我希望我的困惑是理性的。

有一个batch_size也是批量培训的概念。使用model_fit(),我指定了一个batch_size为128.

对我来说,这意味着我的数据集将一次输入128个样本,从而大大减轻内存。只要我有时间等待,它应该允许训练1亿个样本数据集。毕竟,keras一次只能“处理”128个样本。对?

但我高度怀疑,单独指定batch_size不会做我想要的。记忆力仍在使用中。对于我的目标,我需要分别训练128个例子。

所以我猜这是fit_generator。我真的很想问为什么batch_size实际上不起作用,因为它的名字暗示了?

更重要的是,如果需要fit_generator,我在哪里指定batch_size?文档说无限循环。 生成器在每一行循环一次。我如何一次循环128个样本,并记住上次停止的位置,并在下一次keras要求下一批的起始行号(第一批完成后将是第129行)时回想它。

回答

0

首先,keras batch_size确实工作得很好。如果您正在使用GPU,则应该知道模型可能会非常沉重,特别是在您使用复制单元时。如果您正在使用CPU,整个程序将加载到内存中,批量大小不会对内存产生太大影响。如果您使用的是fit(),则整个数据集可能会加载到内存中,keras会在每个步骤中生成批次。预测将要使用的内存量非常困难。

至于fit_generator()方法,你应该建立一个python生成器函数(使用yield而不是return),在每一步产生一个批处理。 yield应该处于无限循环中(我们经常使用while true: ...)。

你有一些代码来说明你的问题?

相关问题