Начните модель с объединяющего слоя, чтобы уменьшить размеры изображений в keras (R) - PullRequest
0 голосов
/ 20 апреля 2020

Я создаю многомасштабный CNN с керасом в R для классификации изображений. Мои начальные изображения имеют размер 150 х 150 пикселей. Дно такой модели может быть сконструировано следующим образом:

model_small = keras_model_sequential() %>%
  layer_conv_2d(filters = 32, kernel_size = c(5, 5), activation = 'relu', input_shape = c(150, 150, 1)) %>%
  layer_max_pooling_2d(pool_size = c(2, 2)) ...

Однако многие функции, необходимые для классификации, являются большими. Поэтому я хотел бы создать отдельную архитектуру CNN, которая анализирует те же изображения, масштабированные до 15 x 15 пикселей. Для простоты программирования (т.е. не нужно создавать отдельные наборы данных изображений) я хотел бы включить объединение / понижающую дискретизацию в архитектуру модели. На мой взгляд, кажется, что это возможно, если запустить модель с layer_average_pooling_2d, так как понижающая дискретизация изображения - это именно то, что делает этот слой. layer_average_pooling_2d не может принять ввод, поэтому мы также должны объединить его с layer_input:

 megamodel_large = keras_model_sequential() %>%
   layer_input(input_shape = c(150, 150, 1) %>%
   layer_max_pooling_2d(pool_size = c(10, 10)) %>%
   layer_conv_2d(filters = 32, kernel_size = c(3, 3)) ...

Однако, это возвращает ошибку:

 Error in py_call_impl(callable, dots$args, dots$keywords) : 
  ValueError: Only provide the shape OR batch_shape argument to Input, not both at the same time. 

Есть ли способ просто уменьшить изображения как первый слой модели?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...