В CNN у вас обычно есть 2D-изображение в качестве входных данных, скажем, черно-белое 28x28x1 (горизонтальное, вертикальное, каналы) число, как в MNIST.
Затем вы создаете 2-мерное ядро (например, ядро 3х3), которое скользит по пикселям входного изображения с определенным шагом (на сколько пикселей оно перемещается по горизонтали / вертикали на каждом шаге) и padding (сколько пикселей со значением 0 добавить ко всем сторонам, чтобы иметь скользящий центр ядра, чтобы иметь возможность покрывать каждый пиксель изображения при достижении его границ).
Давайте скажем используемое Ядро = 3х3, Заполнение = 1, Страйд = 1.
Это ядро, примененное в свертке при скольжении, также будет генерировать изображение 28x28, где каждый пиксель является сверткой ядра с другой областью входного изображения.
Если вместо одного ядра вы создадите 16 из них, то после свертки вы получите 16 изображений размером 28x28, каждое из которых представляет свой «шаблон» изображения. «Шаблон» - это то, что находится внутри каждого ядра.
CNN посредством обратного распространения в контролируемом обучении автоматически изучит значения, которые должны быть помещены в каждое ядро. Например, одно ядро может иметь формат
000
111
000
означает, что он обнаружит горизонтальные линии.
Я думаю, что ядро - это то, что вы называете mask .
Наконец, все 16 изображений 28x28 можно объединить, чтобы сформировать некоторые элементы , которые можно использовать в качестве входных данных полностью подключенного слоя для получения выходных данных классификации.
Обратите внимание, что это объяснение довольно упрощенное, поскольку оно пропускает некоторые отрывки (глубокие свертки, объединение и т. Д.), Но я надеюсь, что этого будет достаточно для ваших сомнений.