CNN的具体卷积过程

参考地址:https://blog.csdn.net/caicaiatnbu/article/details/72792684?locationNum=7&fps=1
由上面的博客可以得出,二维卷积过程就是:比如输入通道数为3,每个图像的大小为7*7,那么当卷积核的数目为2个的时候,卷积核的大小为3*3时。

具体的卷积过程就是用一个3*3大小的卷积核分别和这3个通道的7*7图像做对位相乘,然后把这三个数相加(如果有bias,再加上bias),然后得到最终输出中的一个数。

一维卷积参考地址:https://blog.csdn.net/momaojia/article/details/65641430

相同的一维卷积其实也是用二维卷积实现的(点金之笔:一维卷积是在相邻帧之间提取信息),所以图上面的博客把长度为3的卷积核来进行一维卷积时,他说等价于用3*32的二维卷积进行卷积运算(32是输入10*32中的32,表示的是10个32维向量,也就是说脑海中的一个长度为3的卷积核是竖着往前走的,所以可以等价为一个二维卷积过程3*32对其进行卷积,也要注意其中参数数量的计算方式)。

实战例子:
这里写图片描述
这个是处理ubuntu数据中的一个cnn模型中的参数数量,这一层的输入是(None,10,20,200),用一个TimeDistributed(Conv1D(filters_num = 200, fliters_size = 3));所以这一层的输出是(None, 10,28,200).
那么具体的模型参数数量的计算方式是:先计算一个卷积核中的参数数量(包括权重和偏差),由于kernel_size = 3,且这一层的输入中的要提取的特征的维度为(20,200),所以可以理解为用一个(3,200)的时间窗口去提取(20,200)中的特征。(注意(3,200)中的200是由输入的特征的维度决定的),所以一个卷积核的参数数量为:num1 = 3*200 +1; 所以最终200个卷积核的总的参数数量为(3*200 + 1)*200=120200

猜你喜欢

转载自blog.csdn.net/u010995990/article/details/80080012