CNN中的卷积操作

本文探讨了卷积神经网络(CNN)中的卷积操作,解释了如何在具有深度的矩阵上进行卷积,以及在不同维度上的参数计算。通过举例说明了卷积核在32*32*3的输入上进行5*5*3卷积的过程,指出在使用多个卷积核时,输出将形成一个多维结构,并给出了参数数量的计算方法。
摘要由CSDN通过智能技术生成

CNN中的卷积

很多文章都介绍过卷积的操作:用一个小的卷积核在图像上滑动,每次滑动计算出一个值,比如用3*3的卷积核卷积一个5*5的矩阵(不考虑扩展边缘),过程如下:

conv

卷积操作在二维平面上很好理解,但是在CNN中,被卷积的矩阵是有深度的:
depth

这个深度可以类比三通道的RGB图像想象。所以被卷积的矩阵的维度是depth*height*width,那么针对这样的矩阵,卷积操作是如何进行的呢?一次卷积涉及到的参数量又是多少呢?

斯坦福的教程里说:

Every filter is small spatially (along width and height), but extends through the full depth of the input volume.

大致意思就是,每次卷积的操作是在“一小块儿面积,但是全部深度”上进行的。假如这一层输入的维度是32*32*3,卷积核的维度是5*5*3(这里,5*5两个维度可以随意设计,但是3是固定的,因为输入数据的第三维度的值是3),那么得到的输入应该是28*28*1的。问题来了,怎么把立体的卷积成平面了呢?
上边的操作只使用了一个卷积核,如果使用多个卷积核呢,比如12个?那得到的输入就是立体的了28*28*12。没错,CNN中就是这么操作的,但是请注意两个名词局部连接权值共享,关于这两个词有很多解释,这里不再赘述。

然后来计算一下参数量
还是上边的例子:32*32*3的输入,5*5*3的卷积核,需要的参数个数是5*5*3=75.
该层使用12个卷积核的话,总参数个数(没有算偏置项)5*5*3*12=900.

可以看一下caffe中conv的源码:

template <typename Dtype>
void ConvolutionLayer<Dtype>::Forward_cpu(const vector<Blob<Dtype>*
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值