У меня есть следующая весовая модель. Форма моего ввода 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
)