#python #tensorflow #image-processing #keras
#python #тензорный поток #обработка изображений #keras
Вопрос:
Я использую набор данных fer2013, и когда я использую функцию datagen.flow_from_directory, она не находит все изображения из каталога.
Вот мой код
IMAGE_SIZE = 224
BATCH_SIZE = 64
train_data_dir = "/content/drive/My Drive/Colab/FER2013/Training"
validation_data_dir = "/content/drive/My Drive/Colab/FER2013/PublicTest"
datagen = tf.keras.preprocessing.image.ImageDataGenerator(
rescale=1./255,
validation_split=0.2)
train_generator = datagen.flow_from_directory(
train_data_dir,
target_size=(IMAGE_SIZE, IMAGE_SIZE),
batch_size=BATCH_SIZE,
subset='training')
val_generator = datagen.flow_from_directory(
validation_data_dir,
target_size=(IMAGE_SIZE, IMAGE_SIZE),
batch_size=BATCH_SIZE,
subset='validation')
Вот результат.
Found 22921 images belonging to 7 classes.
Found 714 images belonging to 7 classes.
У меня нет ошибки как таковой, но в папке directory у меня более 28000 изображений, а в PublicTest 3000 итак, почему он находит мне только 22921 и 714 вместо моего фактического количества изображений?
Комментарии:
1. Я бы рекомендовал вам просмотреть эту страницу. Попытайтесь понять, как этот метод считывает изображения и устанавливает для них разные классы. Прочитайте с самого начала, чтобы понять структуру каталогов. keras.io/api/preprocessing/image/#flowfromdirectory-method
2. Спасибо за ваше предложение.
Ответ №1:
По-видимому, у вас есть отдельный каталог для обучения и отдельный каталог для изображений проверки. У каждого должно быть 7 подкаталогов, по одному для каждого класса, с одинаковыми именами в каталогах обучения и проверки. В генераторе данных вы устанавливаете validation_split=0.2. Это займет ваши обучающие изображения и посвятит 80% из них обучению и 20% проверке. Таким образом, примерно 28000 X .8 = 22400. Поскольку у вас уже есть отдельный каталог проверки, вы должны установить split = 0. Таким образом, все изображения в учебном каталоге будут использоваться для обучения. При validation_split=0 вам не нужно указывать подмножество в методах flow_from_directory. Передайте как train_generator, так и val_generator в model.fit.
Комментарии:
1. Спасибо. Теперь все работает нормально. Я новичок в этом, и ваше объяснение очень помогло мне понять такие базовые знания.
2. приветствую, мы все начинаем с замешательства, но со временем вы станете экспертом