caffe的第二次卷积是怎么取得前一层的数据的?

譬如,前一层是pooling层,生成了20张14*14的特征图,现在设定下一层卷积层的卷积核为5*5,输出50个特征图,那..这五十个特征图是怎么由前面二十张转变来的?
已邀请:

JuliusC

赞同来自:

我的理解是这样的
卷积核其实的shape其实是[5, 5, 20], 每个卷积核与前一层卷积结果是一个 14*14的feature map(假设size不变),总共有50个这样的卷积核,所以最后是结果是 14*14*50.

爱在路上 - 想成为菜鸟中的战斗机

赞同来自:

你说的卷积shape是5,5,20,和50个卷积和核,是什么意思?

phoenixbai

赞同来自:

你这标题跟实际问题有点对不上。

现在认真回一下问题:假设batch_size=1好了。

pooling层出来的blob是:1x20x14x14 (matrix A)
走本层的convolution with param : kernel_size=5x5, output_num=50, pad=1,stride=1
那么进行convolution时,首先,会初始化 50*20*5*5 (matrix B) 的weights的值。
14*14的特征上跑5x5的卷积,得到的是11*11的特征,那么
matrix A 卷积 matrix B = 1*50*11*11的结果。其中,20个11*11的结果是叠加的。

这就是整个转变的过程了。这个卷积的细节相关的文章很多,可以多自己搜些文章看看。

joshua_1988 - https://joshua19881228.github.io/

赞同来自:

卷积核其实是50个20*5*5三维的卷积核,每一个三维的卷积核与输入的20个feature map做运算生成1个二维的feature map,一共50个,所以就是50个特征图

要回复问题请先登录注册