gpt4 book ai didi

python - 在 Keras 中,如果 samples_per_epoch 小于生成器的 'end'(自行循环),这会对结果产生负面影响吗?

转载 作者:行者123 更新时间:2023-11-28 16:22:43 24 4
gpt4 key购买 nike

我正在使用 Keras 和 Theano 来训练基本的逻辑回归模型。

假设我有一个包含 100 万个条目的训练集,它对于我的系统来说太大了,无法在不耗尽内存的情况下使用标准的 model.fit()

  • 我决定使用 Python 生成器函数并使用 model.fit_generator() 拟合我的模型。
  • 我的生成器函数返回 1M 训练示例的批量大小块(它们来自数据库表,所以我一次只提取足够的记录来满足每个批量请求,从而控制内存使用情况)。
  • 它是一个无限循环的生成器,一旦达到 100 万的末尾,它就会循环并继续遍历集合

fit_generator() 中有一个强制参数来指定samples_per_epoch。文档表明

samples_per_epoch: integer, number of samples to process before going to the next epoch.

我假设 fit_generator() 不会在每次 epoch 运行时重置生成器,因此需要一个无限运行的生成器。

我通常将 samples_per_epoch 设置为生成器循环的训练集的大小。

但是,如果 samples_per_epoch 这小于生成器正在工作的训练集的大小和 nb_epoch > 1:

  • 你会得到奇怪的/不利的/意想不到的训练结果吗,因为似乎时代将有不同的训练样本集来适应?
  • 如果是这样,您是否以某种方式“快进”您的生成器?

最佳答案

我现在正在处理一些类似的事情。我想让我的时代更短,这样我就可以记录更多关于损失的信息或更频繁地调整我的学习率。

在不深入研究代码的情况下,我认为 .fit_generator 与 keras 内置 ImageDataGenerator 生成的随机增强/混洗数据一起工作这一事实支持您怀疑它不会' 每个时期重置生成器。所以我相信你应该没问题,只要模型暴露在你的整个训练集中,其中一些是在一个单独的时期训练的就没有关系。

如果您仍然担心,您可以尝试编写一个随机采样您的训练集的生成器。

关于python - 在 Keras 中,如果 samples_per_epoch 小于生成器的 'end'(自行循环),这会对结果产生负面影响吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39001104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com