基数对于图像数据集意味着什么?

what does cardinality mean in relation to an image dataset?

成功创建 tensorflow 图像 Dataset 后:

dataset = tf.keras.utils.image_dataset_from_directory(...)

哪个returns

找到属于 5 类 的 21397 个文件。 使用 17118 个文件进行训练。

有基数法:

dataset.cardinality()

其中 returns 包含单个值的张量

tf.Tensor(535, shape=(), dtype=int64)

我读过 docs here 但我不明白 535 代表什么或为什么它与文件数不同?

我问,因为我想了解基数如何影响这个等式:

steps_per_epoch = dataset.cardinality().numpy() // batch_size

在您的情况下,基数只是批次的四舍五入数:

import tensorflow as tf
import pathlib

dataset_url = "https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz"
data_dir = tf.keras.utils.get_file('flower_photos', origin=dataset_url, untar=True)
data_dir = pathlib.Path(data_dir)

batch_size = 32

train_ds = tf.keras.utils.image_dataset_from_directory(
  data_dir,
  validation_split=0.2,
  subset="training",
  seed=123,
  image_size=(180, 180),
  batch_size=batch_size)

print(train_ds.cardinality())
Found 3670 files belonging to 5 classes.
Using 2936 files for training.
tf.Tensor(92, shape=(), dtype=int64)

等式是:2936/32 = cardinality,所以这取决于你的批量大小。