今天本来想看看图卷积,但看环境难配就又转头看caffe去了。我差不多是个废人了。。。
前几天把caffe每一层的输出都弄出来了,但有个地方我一直不理解,就是卷积层的num_output这个参数,官方文档上的解释是:卷积核的数量。
我根据前天的博客把每一层的结果shape输出出来后发现,这东西和卷积后输出的通道数是一样的,就是说有几个卷积核最后就有几个通道。而参数的shape则是:(output_channels, input_channels, filter_height, filter_width),即是说有这个4维矩阵这么多的参数(难怪cnn参数动辄几百上千万)。结合这篇文章,看看卷积的具体过程其实挺好理解的。
假如输入是n*c*h*w,卷积核的size为k,则二维卷积核为k*k,三维卷积核为c*k*k(本来有张图能很好的解释cnn的三维卷积核,但突然找不到了)。num_output的数量应该是值三维卷积核的数量,这样的话,原来的c*h*w的数据通过卷积后就变成了一个通道的特征了,其大小为((h+2*pad_h-k_h)/stride_h+1)*((w+2*pad_w-k_w)/stide_w+1),pad是填充值,stride是步长,就是说c通道的数据经过一个三维卷积核变成一通道的特征了,所以最后共有num_ouput维特征。即输出为num_output*h_new*w_new。即Cout维新特征。
结合上面的博客从卷积的具体过程来理解也是可以的,卷积的参数矩阵:Cout*(Cin*k*k),乘以输入的特征矩阵:(Cin*k*k)*(h_new*w_new),结果就是Cout*(h_new*w_new)了。
上面博客的最后一张图字母有点问题,建议看这篇博客的图。
本文探讨了Caffe框架中卷积层的工作原理,重点解释了num_output参数的意义及其与输出通道数的关系,并通过具体例子说明了卷积过程。
3216

被折叠的 条评论
为什么被折叠?



