Cosa significa dimensione del kernel?


13

Quando le persone parlano di reti neurali, cosa significano quando dicono "dimensione del kernel"? I kernel sono funzioni di somiglianza, ma cosa dice sulla dimensione del kernel?


1
In un contesto della CNN, a volte le persone usano "dimensione del kernel" per indicare la dimensione di un filtro convoluzionale, e allo stesso modo un "kernel" è il filtro stesso.
Sycorax dice di reintegrare Monica il

Risposte:


18

Le reti neurali profonde, le reti neurali più concretamente convoluzionali (CNN), sono fondamentalmente una pila di strati che sono definiti dall'azione di un numero di filtri sull'input. Questi filtri sono generalmente chiamati kernel.

Ad esempio, i kernel nello strato convoluzionale sono i filtri convoluzionali. In realtà non viene eseguita alcuna convoluzione, ma una correlazione incrociata. La dimensione del kernel qui si riferisce alla larghezzaxheight della maschera di filtro.

Il layer pool massimo, ad esempio, restituisce il pixel con il valore massimo da un set di pixel all'interno di una maschera (kernel). Quel kernel viene spazzato attraverso l'input, sottocampionandolo.

Quindi nulla a che fare con il concetto di kernel nelle macchine vettoriali di supporto o nelle reti di regolarizzazione. Puoi pensarli come estrattori di funzioni.


18

inserisci qui la descrizione dell'immagine

Come puoi vedere sopra, il kernel, noto anche come matrice del kernel è la funzione in mezzo e la sua dimensione, qui 3, è la dimensione del kernel (dove la larghezza del kernel è uguale a altezza del kernel).

Si noti che il kernel non deve necessariamente essere simmetrico e possiamo verificarlo citando questo testo dal documento di Conv2D in Tensorflow :

kernel_size: un numero intero o tupla / elenco di 2 numeri interi, che specifica l'altezza e la larghezza della finestra di convoluzione 2D. Può essere un singolo numero intero per specificare lo stesso valore per tutte le dimensioni spaziali.

Ma di solito, facciamo semplicemente la larghezza e l'altezza uguali e, in caso contrario, la dimensione del kernel dovrebbe essere una tupla di 2. Il kernel può essere asimmetrico, ad esempio in Conv1D (vedi questo esempio e la dimensione del kernel può essere più di 2 numeri, per esempio (4, 4, 3) nell'esempio seguente Conv3D :

inserisci qui la descrizione dell'immagine

Le fantastiche gif vengono da qui e qui .


È necessario che la dimensione del kernel sia simmetrica?
Ben

1
@Ben No, non è necessario, quindi la dimensione del kernel può essere una tupla di 1, 2 o 3 numeri.
Lerner Zhang,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.