使用自定义生成器时 batch_size 参数如何在 Keras .fit() 上工作
How batch_size parameter works on Keras .fit() when using custom generators
鉴于我的数据集太大而无法一次全部加载到内存中,我选择使用批量大小为 32 的自定义生成器,这意味着我的数据将以 32 的批量大小加载。现在如果我明白了当我将此生成器作为参数提供给 Keras 的 .fit()
时,这意味着在一个时期内,模型将以 32 批次的形式看到所有训练数据。所以我的问题是,如果我指定一个 batch_size 到 .fit()
方法,这样我就可以控制何时更新权重,这将如何工作,或者我不应该指定它并且权重将为每批生成器更新?
对于你的情况,我会保持原样。正如 docs 所解释的那样,当您在 model.fit(...)
中定义批量大小时,您定义的是:
[...] Number of samples per gradient update. [...]
但是,如果您继续阅读,它还会说:
Do not specify the batch_size if your data is in the form of datasets,
generators, or keras.utils.Sequence instances (since they generate
batches).
因此,将生成器的批量大小传递给 model.fit
时应考虑
鉴于我的数据集太大而无法一次全部加载到内存中,我选择使用批量大小为 32 的自定义生成器,这意味着我的数据将以 32 的批量大小加载。现在如果我明白了当我将此生成器作为参数提供给 Keras 的 .fit()
时,这意味着在一个时期内,模型将以 32 批次的形式看到所有训练数据。所以我的问题是,如果我指定一个 batch_size 到 .fit()
方法,这样我就可以控制何时更新权重,这将如何工作,或者我不应该指定它并且权重将为每批生成器更新?
对于你的情况,我会保持原样。正如 docs 所解释的那样,当您在 model.fit(...)
中定义批量大小时,您定义的是:
[...] Number of samples per gradient update. [...]
但是,如果您继续阅读,它还会说:
Do not specify the batch_size if your data is in the form of datasets, generators, or keras.utils.Sequence instances (since they generate batches).
因此,将生成器的批量大小传递给 model.fit