成功创建张量流图像后
Dataset
:
dataset = tf.keras.utils.image_dataset_from_directory(...)
返回
找到属于5类的21397个文件。 使用17118个文件进行训练。
有基数法:
dataset.cardinality()
返回包含单个值的张量
tf.Tensor(535, shape=(), dtype=int64)
我已阅读此处的文档,但我不明白 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
,所以这取决于您的批量大小。
同样的问题。我明白它是如何执行基数的,但为什么我们首先必须这样做?