You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keras flow_from_directory是否每个epoch遍历所有样本?

Keras flow_from_directory 样本遍历逻辑详解

好问题!我来给你掰扯清楚这个方法的核心行为细节~

  • 默认行为(shuffle=True,这是默认配置):
    • 每个epoch启动时,会把整个数据集的样本顺序彻底打乱一次。
    • 之后会按批次依次抽取样本,直到遍历完所有样本(或者达到你设定的steps_per_epoch数量)。
    • 拿你的例子来说:300张图像、batch_size=30、steps_per_epoch=10,刚好等于总样本数//batch_size(300÷30=10),那这个epoch里每个样本都会被遍历恰好一次,完全没有重复。
  • 关闭打乱的情况(shuffle=False):
    • 不会打乱样本顺序,每个epoch都会严格按照子目录里的文件原始顺序来抽取批次,只要steps_per_epoch设置正确,同样会遍历所有样本。
  • 特殊场景的处理:
    • 要是你设置的steps_per_epoch大于总样本数//batch_size(比如设成12),那前10个step遍历完所有样本后,剩下的2个step会从已经打乱过的数据集开头重新取样本,这时候就会出现重复的样本了。
    • 反过来,如果steps_per_epoch小于这个数值,那这个epoch只会遍历部分样本,剩下的样本不会被用到。

这里要特别纠正一个误区:它不是每个step都从整个数据集独立随机采样。flow_from_directory的默认逻辑是「epoch级打乱+顺序批次抽取」,每个epoch内的样本是按打乱后的固定顺序输出,不会每一步都重新对全量数据集做随机采样。

内容的提问来源于stack exchange,提问作者Razorocean

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:40:01