Ошибка при тренировке VGG16 на маленьком изображении. - PullRequest
0 голосов
/ 22 сентября 2018

Я просто хочу обучить классификатора категоризованным изображениям улиц из Нью-Йорка и Лос-Анджелеса.

Все отлично работает для ввода изображений или обработки данных.

Но она сообщает об ошибке в последней функции.

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
)
...