Ho letto di reti neurali convoluzionali dal here. Poi ho iniziato a giocare con torch7. Sto avendo confusione con lo strato convoluzionale di una CNN.Problemi nella comprensione della rete neurale involontaria
dal tutorial,
The neurons in a layer will only be connected to a small region of the layer before it, instead of all of the neurons in a fully-connected manner.
For example, suppose that the input volume has size [32x32x3], (e.g. an RGB CIFAR-10 image). If the receptive field is of size 5x5, then each neuron in the Conv Layer will have weights to a [5x5x3] region in the input volume, for a total of 5*5*3 = 75 weights.
se il livello di ingresso è [32x32x3], CONV layer will compute the output of neurons that are connected to local regions in the input, each computing a dot product between their weights and the region they are connected to in the input volume. This may result in volume such as [32x32x12].
Ho iniziato a giocare con ciò che un livello CONV potrebbe fare a un'immagine. L'ho fatto a torch7. Qui è la mia realizzazione,
require 'image'
require 'nn'
i = image.lena()
model = nn.Sequential()
model:add(nn.SpatialConvolutionMM(3, 10, 5, 5)) --depth = 3, #output layer = 10, filter = 5x5
res = model:forward(i)
itorch.image(res)
print(#i)
print(#res)
3
512
512
[torch.LongStorage of size 3]
10
508
508
[torch.LongStorage of size 3]
Ora vediamo la struttura di una CNN
Quindi, le mie domande sono,
0.123.516,410617 millionsDomanda 1
La convoluzione è stata eseguita in questo modo: diciamo che prendiamo un'immagine 32x32x3. E c'è il filtro 5x5. Quindi il filtro 5x5 passerà attraverso l'intera immagine 32x32 e produrrà le immagini contorte? Ok, filtro scorrevole 5x5 su tutta l'immagine, otteniamo un'immagine, se ci sono 10 livelli di output, otteniamo 10 immagini (come si vede dall'output). Come li otteniamo? (Vedere l'immagine per chiarimenti se necessario)
Domanda 2
Qual è il numero di neuroni nello strato conv? È il numero di livelli di output? Nel codice che ho scritto sopra, model:add(nn.SpatialConvolutionMM(3, 10, 5, 5))
. È il 10? (numero di livelli di output?)
Se così il punto numero 2 non ha alcun senso. Secondo quello If the receptive field is of size 5x5, then each neuron in the Conv Layer will have weights to a [5x5x3] region in the input volume, for a total of 5*5*3 = 75 weights.
Quindi quale sarà il peso qui? Sono molto confuso in questo. Nel modello definito nella torcia, non c'è peso. Quindi, come il peso sta giocando un ruolo qui?
Qualcuno può spiegare cosa sta succedendo?