2016-03-27 29 views
15

Attualmente sto vedendo l'API di Teano,Qual è il numero del filtro in CNN?

theano.tensor.nnet.conv2d(input, filters, input_shape=None, filter_shape=None, border_mode='valid', subsample=(1, 1), filter_flip=True, image_shape=None, **kwargs) 

dove il è una tupla di (num_filter, num_channel, height, width), sto confondendo di questo perché non è che il numero di filtri deciso dal passo mentre si fa scorrere la finestra del filtro sull'immagine? Come posso specificare il numero del filtro proprio come questo? Sarebbe ragionevole per me se è calcolato dal parametro stride (se ce n'è uno).

Inoltre, sono confuso anche con il termine mappa delle caratteristiche, sono i neuroni di ogni livello? Che ne dici della dimensione del lotto? Come sono correlati?

risposta

21

Il numero di filtri è il numero di neuroni, poiché ciascun neurone esegue una diversa convoluzione sull'input allo strato (più precisamente, i pesi di ingresso dei neuroni formano i noccioli di convoluzione).

Una mappa delle caratteristiche è il risultato dell'applicazione di un filtro (quindi, ci sono tante mappe di funzioni come filtri), e la sua dimensione è il risultato della dimensione di finestra/kernel del filtro e del passo.

L'immagine seguente è stata la migliore che ho trovato per spiegare il concetto a livello alto: http://user-image.logdown.io/user/13673/blog/12890/post/302641/V21DnAAeTKiOirZRFKhT_dl2.png Nota che 2 differenti filtri convoluzionali vengono applicati per l'immagine in ingresso, con conseguente 2 mappe diverse funzionalità (con l'uscita dei filtri) . Ogni pixel di ciascuna mappa caratteristica è un'uscita del livello convoluzionale.

Ad esempio, se si dispone di immagini di input 28x28 e di un layer convoluzionale con 20 filtri 7x7 e passo 1, si ottengono 20 mappe di caratteristiche 22x22 all'uscita di questo livello. Nota che questo è presentato al livello successivo come un volume con width = height = 22 e depth = num_channels = 20. Potresti usare la stessa rappresentazione per addestrare la tua CNN su immagini RGB come quelle del dataset CIFAR10, che sarebbe 32x32x3 volumi (la convoluzione viene applicata solo alle 2 dimensioni spaziali).

+0

Grazie mille! Sei il risparmiatore di vita! – xxx222

+1

Che dire di questa frase sulla scelta del filtro/numero del kernel: "In effetti, per equalizzare il calcolo su ogni livello, il prodotto del numero di caratteristiche e il numero di posizioni dei pixel viene tipicamente scelto come approssimativamente costante tra i livelli" citato in http: //deeplearning.net/tutorial/lenet.html. Puoi farmi un esempio? – BetterEnglish

+1

Penso che l'OP ti chieda da dove arrivano i tuoi 20 filtri. Intendo perché 20? – agcala