#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
папки.
Еще несколько наблюдений из вашего кода:
-
Это должно быть
test_generator = test_datagen.flow_from_dataframe(train_df,.....
вместоtest_generator = train_datagen.flow_from_dataframe(train_df, ...
-
В приведенной ниже строке кода вы использовали папку,
test
test_generator = train_datagen.flow_from_dataframe(train_df, "./dogs-vs-cats/test/",...........
но в приведенной ниже строке кода вы использовали папку test1
. Почему?
test_filenames = os.listdir("./dogs-vs-cats/test1")
- Пожалуйста, используйте
model.predict
вместоmodel.predict_generator
, поскольку последнее не рекомендуется.