Установка X и y для обучения CNN на основе изображений и имен вложенных папок в Keras - PullRequest
0 голосов
/ 20 июня 2020

Следующий фрагмент кода дает мне 150 изображений, принадлежащих трем классам (есть три подпапки по 50 изображений в каждой - папки названы в честь классов Iris, которые я пытаюсь написать CNN для классификации).

У меня возникает вопрос: как мне установить np-массивы изображений в качестве X, а имена подпапок - в качестве y для обучения моей CNN?

import keras
from keras.preprocessing.image import ImageDataGenerator

train_gen = ImageDataGenerator(rescale = 1./255,
shear_range = 0.2, zoom_range = 0.2, horizontal_flip = True)
test_gen = ImageDataGenerator(rescale = 1./255)
training_set = train_gen.flow_from_directory(r"Iris_Imgs",
target_size = (5, 5), shuffle=True, batch_size = 15, class_mode = 'binary')
train_imgs, train_labels = next(training_set)
test_set = test_gen.flow_from_directory(r"Iris_Imgs",
target_size = (5, 5), shuffle=True, class_mode = 'binary')
test_imgs, test_labels = next(test_set)

1 Ответ

2 голосов
/ 20 июня 2020

Вы неправильно используете flow_from_directory. Если ваши данные уже не сгруппированы во вложенные папки, flow_from_directory не будет работать должным образом.

Используйте flow_from_dataframe. Сохраняйте путь к изображениям в одном столбце и class_labels в другом столбце. Затем используйте flow_from_dataframe. Это то, что вам следует использовать, поскольку ваши данные не классифицируются по вложенным папкам.

...