如何从Keras的image_dataset_from_directory中获取文件数和类别数?
从
image_dataset_from_directory提取文件总数和类别数 你完全可以直接从生成的dataset对象中提取这两个信息,无需额外遍历文件系统:
1. 获取类别数
image_dataset_from_directory返回的数据集对象自带class_names属性,它是包含所有类别名称的列表,直接取长度就能得到类别数:
num_classes = len(dataset.class_names) print(f"类别数:{num_classes}")
2. 获取文件总数
方法一:通过数据集API统计(精准高效)
利用TensorFlow的数据集API直接统计总样本数,避免手动遍历文件:
import tensorflow as tf # 用reduce累加每批样本数得到总数 total_samples = dataset.reduce(0, lambda acc, batch: acc + tf.shape(batch[0])[0]).numpy() print(f"文件总数:{total_samples}")
方法二:批次数量×批次大小(近似,注意边界)
如果数据集样本数能被设定的BATCH_SIZE整除,可快速计算;但如果最后一批样本数小于BATCH_SIZE,结果会有误差:
total_batches = dataset.cardinality().numpy() total_samples = total_batches * BATCH_SIZE
对比你原来的文件遍历方法,直接从数据集对象提取的方式更高效,尤其是在数据集规模较大时,还能避免重复的IO操作。
内容的提问来源于stack exchange,提问作者Aloysia de Argenteuil
相关产品推荐
相关产品推荐

