Как я могу избавиться от получения ошибки через генератор тестов?

#python #tensorflow #machine-learning #keras #data-science

#python #тензорный поток #машинное обучение #keras #наука о данных

Вопрос:

Мой train_generator и valid_generator работают, но когда я пытаюсь предсказать, я получаю какую-то ошибку, которая, как я думаю, от test_genarator.

 train_datagen = ImageDataGenerator(rotation_range=15,
                                rescale=1./255,
                                shear_range=0.1,
                                zoom_range=0.2,
                                horizontal_flip=True,
                                width_shift_range=0.1,
                                height_shift_range=0.1
                                )
train_generator = train_datagen.flow_from_dataframe(train_df,
                                                 "./dogs-vs-cats/train/",x_col='filename',y_col='category',
                                                 target_size=Image_Size,
                                                 class_mode='categorical',
                                                 batch_size=batch_size)
validation_datagen = ImageDataGenerator(rescale=1./255)
validation_generator = validation_datagen.flow_from_dataframe(
    validate_df, 
    "./dogs-vs-cats/train/", 
    x_col='filename',
    y_col='category',
    target_size=Image_Size,
    class_mode='categorical',
    batch_size=batch_size
)
  

Это мой генератор обучения и проверки, но мой генератор тестов не работает?

 test_datagen = ImageDataGenerator(rotation_range=15,
                                rescale=1./255,
                                shear_range=0.1,
                                zoom_range=0.2,
                                horizontal_flip=True,
                                width_shift_range=0.1,
                                height_shift_range=0.1)
test_generator = train_datagen.flow_from_dataframe(train_df,
                                                 "./dogs-vs-cats/test/",x_col='filename',y_col='category',
                                                 target_size=Image_Size,
                                                 class_mode='categorical',
                                                 batch_size=batch_size)

  

Также,

 test_filenames = os.listdir("./dogs-vs-cats/test1")
test_df = pd.DataFrame({
    'filename': test_filenames
})
nb_samples = test_df.shape[0]
predict = model.predict_generator(test_generator, steps=np.ceil(nb_samples/batch_size))
  

ValueError: запрашивается извлечение элемента 0, но последовательность имеет длину 0

Комментарии:

1. Можете ли вы добавить полную обратную трассировку ошибок?

Ответ №1:

Причина вашей ошибки в том, что there are no Image files внутри папок, cats and dogs внутри test папки.

Еще несколько наблюдений из вашего кода:

  1. Это должно быть

    test_generator = test_datagen.flow_from_dataframe(train_df,..... вместо

    test_generator = train_datagen.flow_from_dataframe(train_df, ...

  2. В приведенной ниже строке кода вы использовали папку, test

test_generator = train_datagen.flow_from_dataframe(train_df, "./dogs-vs-cats/test/",...........

но в приведенной ниже строке кода вы использовали папку test1 . Почему?

test_filenames = os.listdir("./dogs-vs-cats/test1")

  1. Пожалуйста, используйте model.predict вместо model.predict_generator , поскольку последнее не рекомендуется.