Я пытаюсь загрузить образы поездов из каталога, используя ImageDataGenerator
, поэтому это выглядит так:
train_data_image_generator = ImageDataGenerator(
rescale=0.02,
shear_range=0.01,
zoom_range=0.02,
horizontal_flip=False
)
train_data_generator = train_data_image_generator.flow_from_directory(
directory=train_data_dir,
target_size=(self.img_height, self.img_width),
batch_size=batch_size,
class_mode='categorical',
color_mode='rgb',
shuffle=True
)
validation_data_image_generator = ImageDataGenerator(
rescale=0.01,
shear_range=0.05,
zoom_range=0.05,
horizontal_flip=False
)
validation_data_generator = validation_data_image_generator.flow_from_directory(
directory=validation_data_dir,
target_size=(self.img_height, self.img_width),
batch_size=batch_size,
class_mode='categorical',
color_mode='rgb',
shuffle=True
)
test_data_image_generator = ImageDataGenerator(
rescale=0.02
)
test_data_generator = test_data_image_generator.flow_from_directory(
directory=test_data_dir,
target_size=(self.img_height, self.img_width),
batch_size=batch_size,
class_mode=None,
color_mode='rgb',
shuffle=False
)
И похоже, что он работает успешно, потому что я вижу вывод в консоли: Found 26 images belonging to 26 classes.
Моя последовательная модель начинается так:
self.model.add(Conv2D(64, (3, 3), input_shape=input_shape, padding=conv2d_padding))
self.model.add(LeakyReLU(alpha=0.2))
...
Когда я подхожу к моей модели, я вижу результат:
self.model.fit_generator(
generator=train_data_generator,
epochs=epochs,
steps_per_epoch=train_step_size,
validation_data=validation_data_generator,
validation_steps=valid_step_size,
callbacks=[self.early_stop]
)
Выход:
Однако, когда я пытаюсь выполнить эту строку кода:
score = self.model.evaluate_generator(test_data_generator, steps=valid_step_size)
, я получаю эту ошибку:
ValueError: Error when checking input: expected conv2d_1_input to have 4 dimensions, but got array with shape (53, 21, 3)
Что так странно, потому что я использовал один и тот же механизм для загрузки изображений повсюду, и он работает с данными поезда.
Есть ли у кого-нибудь идеи, что с этим может быть не так?
Благодарю за вашу помощь.