Flow_from_directory Tensorflow возвращает ошибочный набор - PullRequest
0 голосов
/ 29 февраля 2020

Я использую ImageDataGenerator для создания набора проверки (для классификации изображений с использованием TF (Keras) из помеченного каталога изображений. Каталоги 0,1,2,3,4 соответствуют классу каждого изображения, они содержат 488 , 185, 130, 131, 91 изображений соответственно.

train_image_generator = ImageDataGenerator(rescale=1./255) # Generator for our training data
# validation_image_generator = ImageDataGenerator(rescale=1./255) # Generator for our validation data
train_data_gen = train_image_generator.flow_from_directory(batch_size=batch_size,
                                                           directory=train_dir,
                                                           shuffle=True,
                                                           target_size=(IMG_HEIGHT, IMG_WIDTH),
                                                           class_mode='categorical')

возвращает

Found 0 images belonging to 5 classes.

и код ниже

validation_data_generator = train_image_generator.flow_from_directory(
    train_dir, # same directory as training data
    target_size=(IMG_HEIGHT, IMG_WIDTH),
    batch_size=batch_size,
    class_mode='categorical',
    subset='validation') # set as validation data

выводит:

Found 0 images belonging to 5 classes.

Что не так, пожалуйста? Я полагаю, что в проверочном наборе есть как минимум несколько изображений для последнего класса!

Любая помощь будет принята с благодарностью.

CS

1 Ответ

1 голос
/ 01 марта 2020

Трудно сказать, не видя строку вашего каталога, но я подозреваю, что, возможно, проблема может заключаться в символах в вашей переменной train_dir. Вы можете попробовать использовать os.path.exists (train_dir), чтобы увидеть, действительно ли ваш код указывает на правильную точку, или использовать os.listdir, чтобы увидеть, видите ли вы файлы таким образом.

Бросив это Перед созданием ваших данных генераторы данных могут решить эту проблему:

import os
train_dir=os.path.normpath(train_dir)

Обычно я нахожу проблему с косыми чертами в пути. Если вы просто хотите использовать строку, вам обычно нужно использовать двойную обратную косую черту (\) или одну прямую sla * sh (/) вместо одиночной обратной косой черты, которую вы обычно видите в пути. Это особенно проблематично c, когда ваши имена файлов или подкаталогов начинаются с цифры (как у вас).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...