Я просто хочу обучить классификатора категоризованным изображениям улиц из Нью-Йорка и Лос-Анджелеса.
Все отлично работает для ввода изображений или обработки данных.
Но она сообщает об ошибке в последней функции.
ValueError: Ошибка при проверке цели: ожидается, что block5_pool будет иметь 4 измерения, но получит массив с формой (20, 1)
Код ниже.Как решить для устранения этой проблемы?Я пропустил часть очистки данных.
library(keras)
conv_base <- application_vgg16(
weights = "imagenet",
include_top = FALSE,
input_shape = c(150, 150, 3)
)
summary(conv_base)
train_datagen = image_data_generator(
rescale = 1/255,
rotation_range = 40,
width_shift_range = 0.2,
height_shift_range = 0.2,
shear_range = 0.2,
zoom_range = 0.2,
horizontal_flip = TRUE,
fill_mode = "nearest"
)
test_datagen <- image_data_generator(rescale = 1/255)
train_generator <- flow_images_from_directory(
train_dir, # Target directory
train_datagen, # Data generator
target_size = c(150, 150), # Resizes all images to 150 * 150
batch_size = 20,
class_mode = "binary" # binary_crossentropy loss for binary labels
)
validation_generator <- flow_images_from_directory(
validation_dir,
test_datagen,
target_size = c(150, 150),
batch_size = 20,
class_mode = "binary"
)
conv_base %>% compile(
loss = "binary_crossentropy",
optimizer = optimizer_rmsprop(lr = 2e-5),
metrics = c("accuracy")
)
history <- conv_base %>% fit_generator(
train_generator,
steps_per_epoch = 60,
epochs = 30,
validation_data = validation_generator,
validation_steps = 50
)