Сверточные слои и сами слои объединения не зависят от входных измерений. Однако выходные данные сверточных слоев будут иметь разные пространственные размеры для изображений разного размера, и это вызовет проблему, если впоследствии у нас будет полностью связанный слой (поскольку наш полностью связанный слой требует ввода фиксированного размера). Есть несколько решений для этого:
1. Глобальное объединение: избегайте полностью связанных слоев в конце сверточных слоев, и вместо этого используйте объединение (такое как глобальное среднее объединение), чтобы уменьшить ваши карты объектов от формы (N, H, W, C) (до глобального объединения ) по форме (N, 1,1, C) (после глобального пула), где:
N = количество выборок мини-пакетов
H = пространственная высота карты объектов
W = пространственная ширина карты объектов
C = количество карт объектов (каналов)
As Можно видеть, что выходная размерность (N * C) теперь не зависит от пространственного размера (H, W) карт объектов. В случае классификации вы можете перейти к использованию полностью связанного слоя сверху, чтобы получить логиты для ваших классов.
2. Объединение переменных размеров:Используйте регионы пула переменного размера, чтобы получить одинаковый размер карты объектов для разных входных размеров.
3. Обрезать / изменить размер / заполнить входные изображения: вы можете попробовать изменить масштаб / обрезать / заполнить входные изображения, чтобы все они имели одинаковую форму.
В контексте трансферного обучения вы можете использовать входные данные другого размера, чем исходные входные данные, с которыми обучалась модель. Вот несколько вариантов для этого:
4. Создать новые полностью связанные слои: вы можете полностью отбросить исходные полностью связанные слои и инициализировать новый полностью связанный слой с необходимой вам размерностью, а также обучить ее с нуля.
5. Относитесь к полностью связанному слою как к свертке: как правило, мы изменяем карты объектов с (N, H, W, C) на (N, H * W * C) перед подачей его на полностью подключенный слой. Но вы также можете рассматривать полностью связанный слой как свертку с восприимчивым полем (H, W). Затем вы можете просто свести это ядро с вашими картами возможностей независимо от их размера (при необходимости используйте нулевое заполнение) [
http://cs231n.github.io/transfer-learning/ ].