我使用Keras与Theano一起训练基本的逻辑回归模型。
假设我已经获得了100万个条目的训练集,对于我的系统而言,它太大了,无法使用标准model.fit()
而不会消耗内存。
model.fit_generator()
拟合我的模型。 fit_generator()
中有一个强制性参数来指定samples_per_epoch
。文件表明
samples_per_epoch:整数,在进入下一个纪元之前要处理的样本数。
我假设fit_generator()
每次运行一个纪元时都不会重置发生器,因此需要一个无限运行的发生器。
我通常将samples_per_epoch
设置为生成器循环的训练集的大小。
但是,如果samples_per_epoch
这小于生成器正在使用的训练集的大小,nb_epoch
> 1:
答案 0 :(得分:3)
我现在正在处理类似的事情。我想让我的时代更短,所以我可以记录更多关于损失的信息或更频繁地调整我的学习率。
不考虑代码,我认为.fit_generator
与keras内置ImageDataGenerator
生成的随机扩充/混洗数据一起工作的事实支持您怀疑它不会重置生成器每个时代。所以我相信你应该没问题,只要模型暴露在你的整个训练集中,如果其中一些训练是在一个单独的时代内进行训练就不重要了。
如果你仍然担心你可以尝试编写一个随机抽样训练集的生成器。