使用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
相关产品推荐
相关产品推荐

