cuda-convnet 卷积神经网络 一般性结构卷积核个数 和 输入输出的关系以及输入输出的个数的说明:

卷积神经网络 一般性结构卷积核个数和 输入输出的关系以及输入输出的个数的说明:

以cifar-10为例:

Initialized data layer 'data', producing3072 outputs
Initialized data layer 'labels', producing1 outputs
Initialized convolutional layer 'conv1',producing 32x32 64-channel output
Initialized max-pooling layer 'pool1',producing 16x16 64-channel output
Initialized cross-mapresponse-normalization layer 'rnorm1', producing 16x16 64-channel output
Initialized convolutional layer 'conv2',producing 16x16 64-channel output
Initialized cross-map response-normalizationlayer 'rnorm2', producing 16x16 64-channel output
Initialized max-pooling layer 'pool2',producing 8x8 64-channel output
Initialized locally-connected layer'local3', producing 8x8 64-channel output
Initialized locally-connected layer'local4', producing 8x8 32-channel output
Initialized fully-connected layer 'fc10',producing 10 outputs
Initialized softmax layer 'probs',producing 10 outputs
Initialized logistic regression cost'logprob'
Initialized neuron layer 'conv1_neuron',producing 65536 outputs
Initialized neuron layer 'conv2_neuron',producing 16384 outputs
Initialized neuron layer 'local3_neuron',producing 4096 outputs
Initialized neuron layer 'local4_neuron',producing 2048 outputs


 

1、卷积说明:

输入是3个32*32, 共3*1024=3072。每条边padding为2,则内存里实际为3个36*36.

卷积核个数是3维的5*5分别与3个输入进行卷积运算,得到3维的32*32的输出,这里将3维的32*32相应位相加得到一张32*32的feature Map

假设有64个3维的5*5卷积核就有64张feature Map

详细过程图示为:

卷积的权值存取方式为:

第一个5*5作用于第一张输入全图,

第二个5*5作用于第二张输入全图,

第三个5*5作用于第三张输入全图,

再把这三个相应位置相加,在加上biases,得到第一张feature map

最后64个5*5*3反复上面的过程,得到64个featuremap

这里weights有3*5*5*64个,biases有64个.

这里输入是3 输出是64,卷积核是5*5权值个数是64* 5*5*3




2、local层说明:

输入是8x8  64-channel output 。每条边padding为1,则内存里实际为64个10*10.

卷积核个数是8*8个的3*3的卷积核分别与单一的一个输入相应位置卷积,得到1个8*8的中间输出O1。这里将8*8个的3*3作用于单一单张输入O1的卷积核组称为A。

如今64维的A分别作用于64个输入,将得到64个中间输出O2(就是64个O1),这里将64维的O2相应位相加得到一张8*8的feature Map。这里将64维的A称作B。

假设有64个B就有64张feature Map,就是终于的输出。

 

Local层和conv层的差别就在于local的单一输入的feature Map不共享卷积核。而conv是共享卷积核的,所以local比conv多了在单一输入的卷积核。

 

权值存取方式说明:

每一列是64*3*3*8*8=36864;将一列分成64份:每一份就是64*3*3.一份相应输出的一个pixel.

前64*3*3个权值怎么计算的呢:

64个3*3与64个输入的左上角3*3分别卷积,就是第一个3*3与第一个输入的左上角卷积,第二个3*3与第二个输入的左上角卷积,。。。得到64个值,然后这64个值相加再加biases就是第一个输出的左上角的值.


 

 

 

posted @ 2014-06-21 09:55  blfshiye  阅读(628)  评论(0编辑  收藏  举报