提问者:小点点

为什么image_dataset_from目录返回BatchDataset=无的对象?


我试图为此链接中提供的图像创建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个测试图像。但当我检查时,例如,我得到的培训集:

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

也就是说,batch_size=没有,而应该是6000。

这是什么意思?我怎样才能修好它?


共1个答案

匿名用户

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

batch\u size=None基本上意味着您的型号可以接受任何批次大小。批量大小在培训期间设置。在Keras中,您可以将batch_size设置为model的参数。fit()。Keras将根据您指定的批次大小

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