Я работаю над системой распознавания изображений в CNN. Данные поезда и тестирования вводятся следующим образом:
trainDataGen = ImageDataGenerator(
rotation_range = 5,
width_shift_range = 0.1,
height_shift_range = 0.1,
rescale = 1.0/255,
shear_range = 0.2,
zoom_range = 0.2,
horizontal_flip = False,
fill_mode = 'nearest')
test_datagen = ImageDataGenerator(rescale=1./255)
trainGenerator = trainDataGen.flow_from_directory(
r"Dataset/Train",
target_size = (32,32),
batch_size = 32,
color_mode = "grayscale",
class_mode = "categorical")
validation_generator = test_datagen.flow_from_directory(
r"Dataset/Test",
target_size=(32,32),
batch_size=32,
color_mode = "grayscale",
class_mode= 'categorical')
Реализована 4-х слойная CNN, которая начинается следующим образом:
model = Sequential()
#Layer1----------------------------------------------------------
model.add(Convolution2D(filters = 32,
kernel_size = (3,3),
strides = 1,
activation = "relu",
input_shape = (32,32,3)))
Обучение успешно выполнено следующим образом:
#Fit model on the loaded dataset---------
res=model.fit_generator(
trainGenerator,
epochs = 25,
steps_per_epoch = 2444,
validation_data = validation_generator,
validation_steps = 432
)
Теперь я пытаюсь проверить тестовые данные с помощью:
#Compile Model---------------------------
model.compile(optimizer = "adam",
loss = "categorical_crossentropy",
metrics = ["accuracy"])
res= model.evaluate_generator(validation_generator)
Это показывает ошибку:
ValueError: Error when checking input: expected conv2d_4_input to have shape (32, 32, 3) but got array with shape (32, 32, 1)
Так как даже после многих попыток я не смог запустите opencv, вместо этого я пытаюсь использовать matplotlib.
# Python program to read
# image using matplotlib
# importing matplotlib modules
import matplotlib.image as mpimg
import matplotlib.pyplot as plt
# Read Images
img = mpimg.imread('pic.png')
# Output Images
plt.imshow(img)
Работает отлично. Теперь я пытаюсь предсказать, что это за изображение pi c .png. Я пытаюсь:
lists = model.predict(img)
Это показывает ошибку:
ValueError: Error when checking input: expected conv2d_4_input to have 4 dimensions, but got array with shape (32, 32)
Может ли кто-нибудь помочь, как я могу изменить размер ввода?