我用Keras和Theano来训练一个基本的logistic回归模型。
假设我已经有了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:
发布于 2016-08-23 05:53:41
我现在正在处理一些类似的事情。我想缩短我的时代,这样我就可以记录更多关于损失的信息,或者更经常地调整我的学习速度。
在不深入研究代码的情况下,我认为.fit_generator使用由keras内置的ImageDataGenerator生成的随机增强/改组数据这一事实支持了您的怀疑,即它没有根据时代重置生成器。所以我认为你应该很好,只要你的模型暴露在你的整套训练中,如果其中一些是在一个单独的时代里训练的话,那就不重要了。
如果你仍然担心,你可以尝试写一个发电机,随机取样你的训练集。
https://stackoverflow.com/questions/39001104
复制相似问题