Я создаю многомасштабный 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.
Есть ли способ просто уменьшить изображения как первый слой модели?