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

如何从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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 21:25:38