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

使用image_dataset_from_directory后每次取batch输出不同数组的原因

问题解答

你的猜测完全正确,该现象确实是shuffle=True参数导致的。

具体原因

  • tf.keras.preprocessing.image_dataset_from_directory的shuffle参数作用为:当设置为True时,每次触发数据集的迭代操作前,TensorFlow都会对整个数据集的所有样本顺序进行随机重排。
  • 你每次独立执行for image_batch,label_batch in dataset.take(1):这段代码时,都会重新初始化一次数据集的迭代器,此时数据集已经完成了新一轮的随机打乱,所以拉取到的第一个批次(batch)里的样本组合和上一次执行时的样本组合完全不同,因此你打印的批次内第二个样本image_batch[1]的数组内容每次都会发生变化。

验证方法

你可以将加载数据集的代码修改为shuffle=False,如下所示:

dataset=tf.keras.preprocessing.image_dataset_from_directory(
  "PlantVillage",
  shuffle=False,
  image_size=(IMAGE_SIZE,IMAGE_SIZE),
  batch_size=BATCH_SIZE
)

for image_batch,label_batch in dataset.take(1):
    print(image_batch[1])

修改后重复执行打印代码,两次输出的数组内容会完全一致,即可验证上述逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:18:01