Часть II • Введение в TensorFlow.js
Аналогично плотному слою слой conv2d включает член смещения, прибавляемый
к результату свертки. Кроме того, в слое conv2d обычно используется нелинейная
функция активации. В данном примере ее роль играет ReLU. Напомним, что в пункте
«Избегаем нагромождения слоев без нелинейностей» главы 3 на с. 115 мы предосте
регали: два идущих подряд плотных слоя без нелинейностей эквивалентны одному
плотному слою. То же самое справедливо и для слоев conv2d: два идущих подряд
подобных слоя без нелинейной функции активации математически эквивалентны
одному слою conv2d с б
о
льшим ядром, а значит, составлять подобным образом свер
точную нейронную сеть смысла не имеет, желательно этого избегать.
Уф! С нюансами функционирования слоев conv2d покончено. Давайте на минуту
остановимся и взглянем, что на самом деле дает нам слой conv2d. По существу, он
представляет собой особый способ преобразования входного изображения в вы
ходное. Высота и ширина выходного изображения обычно меньше, чем у входного.
Степень уменьшения размеров зависит от параметра
kernelSize
. А число каналов
выходного изображения может быть меньшим, таким же или большим, чем у вход
ного, в зависимости от параметра
filters
.
Итак, слой conv2d представляет собой преобразование одного изображения
в другое. Две основные особенности преобразования conv2d — локальность и един
ство параметров.
z
z
Локальность
(locality) означает, что на значение конкретного пиксела выходного
изображения влияет лишь небольшой фрагмент входного изображения, а не все
пикселы этого входного изображения. Размер фрагмента определяется параме
тром
kernelSize
. Именно это отличает conv2d от плотных слоев: в плотном слое
все составляющие входного сигнала влияют на все составляющие выходного.
Другими словами, в плотном слое входные и выходные элементы «плотно свя
заны» (отсюда и его название). Таким образом, можно говорить о «разреженных
связях» в слое conv2d. Плотные слои усваивают глобальные закономерности
входных данных, а сверточные слои — локальные, то есть проявляющиеся в пре
делах маленького окна ядра.
z
z
Единство параметров
(parameter sharing) означает, что на выходной пиксел A
его маленький входной фрагмент изображения влияет точно так же, как и на
выходной пиксел Б — его входной фрагмент. Дело в том, что при скалярном
произведении во всех позициях окна используется одно и то же сверточное ядро
(см. рис. 4.3).
Благодаря локальности и единству параметров слой conv2d является высоко
эффективным преобразованием одного изображения в другое, если говорить о ко
личестве требуемых параметров. В частности, размер сверточного ядра не меняется
с изменением высоты или ширины входного изображения. Возвращаясь к нашему
первому слою conv2d из листинга 4.1, видим у него форму ядра
[kernelSize,
kernelSize,
1,
filter]
(то есть
[5,
5,
1,
8]
), что дает суммарно 5
×
5
×
1
×
8 = 200 па
раметров, вне зависимости от размера входных изображений MNIST (28
×
28 или
намного больше). Форма выходного сигнала этого слоя conv2d —
[24,
24,
8]
(не
считая измерения батчей). Таким образом, этот слой conv2d преобразует тензор,
Do'stlaringiz bilan baham: |