Запрос по параметрам (.output_shape), используемым в модели CNN

Вопрос или проблема

Я применяю модель CNN к своему набору данных для прогнозирования. После изменения размеров, input_shape моей модели1 становится:

model1.input_shape:
(None, 1, 3, 4)

затем я применяю CNN, первый слой ввода определен ниже:

model1.add(Convolution2D(128, (2,2), border_mode=”valid” , input_shape=(1, 3, 4), activation= ‘relu’))

здесь 1 – это количество каналов, 3 и 4 представляют мои узлы, что означает 12 входных узлов или признаков, теперь когда я проверяю output_shape model1, это:

model1.output_shape:
(None, 128, 2, 3)

здесь 128 – это количество нейронов, которые я указал в своем входном слое. Мой вопрос: что означают элементы 2 и 3 здесь?

Выходная форма в 2D свёрточном слое зависит от:

  • Размеров входа W, H
  • Размеров фильтра F
  • Дополнения P
  • Шага S
  • Количество фильтров или глубины D

Здесь, в вашей модели, W=3, H=4, F=2, P=0 (умолчательное дополнение в Keras), S=1 (умолчательный шаг в Keras), D=128, как вы это определили.

Преобразование определяется математической операцией свёртки, давая вам выходную форму:

$\frac{W−F+2P}{S} + 1$

Эта выходная форма показывает, как ваш вход реагирует (в терминах размера) при свёртке с вашими 128 фильтрами один за другим.

Ответ или решение

Ваша проблема касается параметров .output_shape, которые используются в модели свёрточной нейронной сети (CNN). Давайте разберёмся детально в вопросах, связанных с преобразованием размеров на каждом этапе.

Параметры, влияющие на выходную форму

Как вы уже заметили, выходная форма вашего слоя свёртки вычисляется на основании нескольких параметров:

  1. Размер входа (W, H): Ширина (W) и высота (H) вашего входного тензора.
  2. Размер фильтра (F): Размер ядра свёртки, который в вашем случае составляет (2, 2).
  3. Паддинг (P): Параметр, определяющий, добавляются ли нули к краям изображения. При использовании значения "valid" в Keras, паддинг равен 0.
  4. Шаг (S): Шаг, который указывает, на сколько позиций сдвигается фильтр при свёртке. По умолчанию S равно 1.
  5. Число фильтров (D): Это количество свёрточных фильтров, которое вы задали, равно 128.

Расчёт выходной формы

На основе вышеизложенного, выходная форма после слоя свёртки может быть рассчитана с помощью следующей формулы:

[
\text{Output Width} = \frac{W – F + 2P}{S} + 1
]

[
\text{Output Height} = \frac{H – F + 2P}{S} + 1
]

Подставим ваши значения в формулу:

  • Для ширины:

    • (W = 3), (F = 2), (P = 0), (S = 1):
      [
      \text{Output Width} = \frac{3 – 2 + 2 \cdot 0}{1} + 1 = 2
      ]
  • Для высоты:

    • (H = 4), (F = 2), (P = 0), (S = 1):
      [
      \text{Output Height} = \frac{4 – 2 + 2 \cdot 0}{1} + 1 = 3
      ]

Интерпретация выходной формы

Теперь, когда вы узнали, как вычислять размеры выходов, давайте рассмотрим вашу выходную форму:

model1.output_shape: (None, 128, 2, 3)
  • None — это размер батча, который не фиксирован и будет определяться во время обучения.
  • 128 — это число фильтров, которые вы указали, то есть количество свёрточных ядер, применённых к входным данным.
  • 2 и 3 — это высота и ширина выходного тензора после свёртки, которые вы рассчитали, равные 2 и 3 соответственно.

Таким образом, выходная форма (None, 128, 2, 3) указывает, что в результате применения 128 фильтров размер выходного изображения составит 2 пикселя по высоте и 3 пикселя по ширине. Это полезно для последующих слоёв модели, таких как слои подвыборки или полносвязные слои, где необходимо учитывать размеры выходных данных.

Заключение

В целом, понимание изменения размерности через свёрточные слои — ключевой аспект для успешного проектирования и настройки моделей глубокого обучения. Факторы, такие как размер входных данных, размер фильтров и их количество, играют критически важную роль в формировании окончательного архитектурного решения вашей нейронной сети.

Оцените материал
Добавить комментарий

Капча загружается...