Использование обучающих, валидационных и тестовых расщеплений для генераторов Keras flow_from_directory - PullRequest
0 голосов
/ 11 апреля 2020

Я пытался создать модель CNN для регрессии изображения. Я создал фрейм данных с абсолютными путями изображений (X) и их соответствующими значениями Y. Я разделил фрейм данных, используя train_test_split method, и я хотел бы знать, возможно ли использовать эти разбиения вместо того, чтобы давать имена столбцов X_col и y_col для генераторов flow_from_directory.

Я приложил свой код с выводом. Буду очень признателен, если кто-нибудь сможет мне помочь. Заранее спасибо.

# X ---> /content/drive/My Drive/Colab/folder/.jpg
# y ---> dataframe['column']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)

X_train, X_val, y_train, y_val  = train_test_split(X_train, y_train, test_size=0.25, random_state=1)


datagen = ImageDataGenerator(
        rotation_range=40,
        width_shift_range=0.2,
        height_shift_range=0.2,
        rescale=1./255,
        shear_range=0.2,
        zoom_range=0.2,
        horizontal_flip=True,
        fill_mode='nearest',
        validation_split=0.25)

train_generator=datagen.flow_from_dataframe(dataframe=chondro, # <---- My Dataframe
                                            directory=None, # <---- None since splits have absolute paths
                                            x_col=X_train, # <---- My x training split
                                            y_col=y_train, # <---- My y training split
                                            subset="training",
                                            batch_size=32,
                                            seed=42,
                                            shuffle=True,
                                            class_mode="raw",
                                            target_size=(256,256))

valid_generator=datagen.flow_from_dataframe(dataframe=chondro, # <---- My Dataframe
                                            directory=None, # <---- None since splits have absolute paths
                                            x_col=X_val, # <---- My x validation split
                                            y_col=y_val, # <---- My y validation split
                                            subset="validation",
                                            batch_size=32,
                                            seed=42,
                                            shuffle=True,
                                            class_mode="raw",
                                            target_size=(256,256))

test_datagen=ImageDataGenerator(rescale=1./255.)

test_generator=test_datagen.flow_from_dataframe(dataframe=chondro, # <---- My Dataframe
                                            directory=None, # <---- None since splits have absolute paths
                                            x_col=X_test, # <---- My x test split
                                            y_col=y_test, # <---- My y test split
                                            batch_size=32,
                                            seed=42,
                                            shuffle=False,
                                            class_mode=None,
                                            target_size=(256,256))

--------------------------------------------------------------------------

Found 0 validated image filenames.  # <--- I want to use the train split
Found 0 validated image filenames.  # <--- I want to use the validation split
Found 0 validated image filenames.  # <--- I want to use the training split
/usr/local/lib/python3.6/dist-packages/keras_preprocessing/image/dataframe_iterator.py:273: UserWarning: Found 664 invalid image filename(s) in x_col="ID". These filename(s) will be ignored.
  .format(n_invalid, x_col)
...