KERAS выбор номера слоя / единиц входного слоя - PullRequest
0 голосов
/ 02 июля 2019

У меня есть следующая весовая модель. Форма моего ввода 64,64,3. Я использую последовательный и у меня есть 6 классов (3000 изображений каждый). Точность составляет более 90%, но когда я пытаюсь предсказать новое изображение, это не хорошо.

Как выбрать количество слоев? Существуют ли правила для определения количества единиц и особенно для входного слоя? Есть ли какая-либо связь между формой и количеством единиц?

conv_base <- application_vgg16(
  weights = "imagenet",
  include_top = FALSE,
  input_shape = c(64, 64, 3)
)

model <- keras_model_sequential() %>% 
      conv_base %>% 
      layer_flatten() %>% 
      layer_dense(units = 256, activation = "relu") %>%
      layer_batch_normaization() %>%
      layer_dense(units = 3, activation = "softmax")

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,                   
  train_datagen,              
  target_size = c(64, 64),  
  batch_size = 20,
  class_mode = "categorical"    
)

validation_generator <- flow_images_from_directory(
  validation_dir,
  test_datagen,
  target_size = c(64, 64),
  batch_size = 20,
  class_mode = "categorical"
)
model %>% compile(
  loss = 'categorical_crossentropy',
  optimizer = optimizer_rmsprop(lr = 2e-5),
  metrics = c("accuracy")
)

##Plot
history <- model %>% fit_generator(
  train_generator,
  steps_per_epoch = 100,
  epochs = 5,
  validation_data = validation_generator,
  validation_steps = 50
)
...