我正在尝试为此链接中提供的图像创建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
参数的更多信息,您可以访问此处