O que significa tamanho do kernel?

13

Quando as pessoas falam sobre redes neurais, o que elas significam quando dizem "tamanho do kernel"? Kernels são funções de similaridade, mas o que isso diz sobre o tamanho do kernel?

quil
fonte
11
No contexto da CNN, as pessoas às vezes usam "tamanho do kernel" para significar o tamanho de um filtro convolucional, e da mesma forma um "kernel" é o próprio filtro.
Sycorax diz Restabelecer Monica

Respostas:

18

Redes neurais profundas, redes neurais mais concretamente convolucionais (CNN), são basicamente uma pilha de camadas que são definidas pela ação de vários filtros na entrada. Esses filtros são geralmente chamados de kernels.

Por exemplo, os núcleos na camada convolucional são os filtros convolucionais. Na verdade, nenhuma convolução é realizada, mas uma correlação cruzada. O tamanho do kernel aqui se refere à largura x altura da máscara de filtro.

A camada de pool máximo, por exemplo, retorna o pixel com valor máximo de um conjunto de pixels dentro de uma máscara (kernel). Esse kernel é varrido pela entrada, subamostrando-a.

Portanto, nada tem a ver com o conceito de kernels em máquinas de vetores de suporte ou redes de regularização. Você pode pensar neles como extratores de recursos.

jpmuc
fonte
18

insira a descrição da imagem aqui

Como você pode ver acima, o kernel, também conhecido como matriz do kernel, é a função intermediária e seu tamanho, aqui 3, é o tamanho do kernel (onde a largura do kernel é igual à altura do kernel).

Observe que o kernel não necessariamente é simétrico, e podemos verificar que citando este texto no documento do Conv2D no Tensorflow :

kernel_size: um número inteiro ou tupla / lista de 2 números inteiros, especificando a altura e a largura da janela de convolução 2D. Pode ser um número inteiro único para especificar o mesmo valor para todas as dimensões espaciais.

Mas geralmente, tornamos a largura e a altura iguais e, se não, o tamanho do kernel deve ser uma tupla de 2. O kernel pode ser assimétrico, por exemplo, no Conv1D (veja este exemplo , e o tamanho do kernel pode ter mais de 2 números, por exemplo (4, 4, 3) no exemplo abaixo Conv3D :

insira a descrição da imagem aqui

Os gifs impressionantes vêm daqui e aqui .

Lerner Zhang
fonte
É necessário que o tamanho do kernel precise ser simétrico?
Ben
11
@ Ben Não, é desnecessário, portanto o tamanho do kernel pode ser uma tupla de 1, 2 ou 3 números.
Lerner Zhang