【问题标题】:What is an epoch when using keras generators?使用 keras 生成器时的纪元是什么?
【发布时间】:2017-05-31 20:34:05
【问题描述】:

我想使用 fit_generator 来处理我的数据。

我知道生成器必须永远运行,并且 samples_per_epoch 定义了在进入下一个 epoch 之前从生成器产生的元素数量。

但是这里的纪元是什么?当我们运行 fit 时,一个 epoch 是针对整个数据集的运行,根据 batch_size 进行拆分。但是在这里,batch_size 没有任何意义,因为 fit_generator 就像在生成器的每个元素上调用 train_on_batch 一样,没有“整个数据集”之类的东西。

我的问题是:samples_per_epoch 和 nb_epoch 有意义吗?或者在任何情况下,网络都是在生成器返回的 samples_per_epoch*nb_epoch 批次上以相同的方式训练的,而 epoch 没有实际意义?

【问题讨论】:

    标签: python generator keras


    【解决方案1】:

    fit_generator 对生成器生成的数据视而不见。生成器类负责检查整个数据集。使用samples_per_epoch fit_generator 可以简单地跟踪纪元计数。检查here & here & here

    【讨论】:

    • 好的,唯一决定训练的是 samples_per_epoch*nb_epoch?剩下的只是打印?
    • 你的第二个链接很有意思,所以其实我错了,samples_per_epoch*nb_epoch不是batch的数量,而是不同batch的size之和。
    • 是的,您可以将 samples_per_epoch 设置为总训练大小,然后通过生成器将其拆分并传递给您想要的任何内容。但我通常按批量大小将其四舍五入。使生成器线程更易于实现。您可以查看我的答案stackoverflow.com/questions/41633087/…
    猜你喜欢
    • 1970-01-01
    • 2017-06-18
    • 2018-04-02
    • 2010-11-08
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多