Как сложенные сверточные слои работают в CNN? - PullRequest
1 голос
/ 02 августа 2020
• 1000 Если первый слой свертки имеет 32 свертки, а второй слой имеет 64 сверточных слоя, то первый слой создает 32 карты признаков. Но сколько карт объектов создает второй слой? Действует ли каждая свертка из 64 на ранее сгенерированные 32 карты функций, создавая в общей сложности 32 * 64 = 2048 карт функций? Или происходит что-то еще?

Простой код, относящийся к вопросу:

model = keras.models.Sequential([
keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(300, 300, 3)),
keras.layers.MaxPooling2D(2, 2),

keras.layers.Conv2D(64, (3, 3), activation='relu'),
keras.layers.MaxPooling2D(2, 2)])

Ответы [ 2 ]

1 голос
/ 02 августа 2020

Количество каналов входной матрицы и количество каналов в каждом фильтре должны совпадать, чтобы можно было выполнять поэлементное умножение.

Итак, основное различие между первая и вторая свертки состоят в том, что количество каналов во входной матрице в первой свертке равно 3, поэтому мы будем использовать 32 фильтра, где каждый фильтр имеет 3 канала (глубина матрицы ядра).

Для второй свертки входная матрица имеет 32 канала (карты характеристик), поэтому каждый фильтр для этой свертки также должен иметь 32 канала. Например: каждый из 64 фильтров будет иметь форму 32@3x3.

Результатом шага свертки для одного фильтра формы 32@3x3 будет один канал формы WxH (ширина, высота) . После применения всех 64 фильтров (где каждый из них имеет форму: 32@3x3) мы получим 64 канала, где каждый канал является результатом свертки одного фильтра.

0 голосов
/ 02 августа 2020

Первый слой свертки имеет 32 фильтра, но он применяется ко всем ТРЕМЯ каналам изображения, поэтому карты характеристик после первого Conv2D составляют 32x3 = 96, затем 64 фильтра второго Conv2D применяются к каждому из этих 96 карты функций, поэтому после 2-го Conv2D это 64x96 = ... (заполните пробел). Но для простоты Керас показывает только (..., 32) или (..., 64). Вы можете использовать model.summary () для проверки.

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