为什么'image_dataset_from directory'(keras,tensorflow)返回BatchDataset = None的对象?



我正在尝试为此链接中提供的图像创建LeNet5

为了上传训练和测试集,我使用

tf.keras.preprocessing.image_dataset_from_directory:
train_set = image_dataset_from_directory('Linnaeus_5_32X32/train',
labels='inferred',
label_mode = 'categorical',
color_mode = 'grayscale',
batch_size=batch_size,
image_size = (image_rows,image_cols),
shuffle=True,
seed=1997)
test_set = image_dataset_from_directory('Linnaeus_5_32X32/test',
labels='inferred',
label_mode = 'categorical',
color_mode = 'grayscale',
batch_size = batch_size,
image_size = (image_rows,image_cols),
shuffle=True,
seed=1997)

这应该返回一个tf.data.Dataset对象,它是一个元组(图像、标签(,其中图像具有形状(batch_size, image_size[0], image_size[1], num_channels(,标签遵循格式(batch_size、num_classes(。

然而,这就是我得到的,打印在屏幕上的:

Found 6000 files belonging to 5 classes.
Found 2000 files belonging to 5 classes.

这是正确的,因为我有6000张火车图像和2000张测试图像。但是,例如,当我检查我得到的training_set时:

<BatchDataset shapes: ((None, 32, 32, 1), (None, 5)), types: (tf.float32, tf.float32)>

也就是说,batch_size在应该为6000时为None。

这是什么意思?我该怎么修?

批量大小和总训练样本之间存在差异。如果你有6000张图像需要训练,你可以用1批6000号、100批60号等来训练你的模型

batch_size = None基本上意味着您的模型可以接受任何批量大小。批量大小是在培训期间设置的。在Keras中,可以将batch_size设置为model.fit()的参数。Keras将根据您指定的batch_size计算所需的批次数

有关fit参数的更多信息,您可以访问此处

最新更新