关于卷积 所谓卷积,其实就是一种滤波方式。这在信号处理、图像处理上经常用到。最简单的在图像里面,一副图像和一个给定图像或者模版的进行卷积,卷积就是对应位置数据相乘然后再相加,比如像前面神经元与神经元全连接在一起的,假设他们是图像,对于其中一个隐含层的节点计算来说,拿出来其实就是一种卷积计算,像下面这样: 这是隐含层的全链接,那部分连接可能就不是I1 到I9,可能只是I1到I3之类的与W1~W3卷积。
一个典型的部分连接其实可以等效为图像滤波一样,比如拉普拉斯滤波模版对图像滤波,像下面这样子: 关于卷积层 知道了图像与小模版的卷积概念后再来看看卷积层就很好理解了。 像上面,是对一副图像进行一个模版的卷积,那么我们可以定义好几个模版,分别依次卷积,像下面这样: 每一个卷积模版就好比是一个拉普拉斯模版那样子的,但是他们之间肯定是不一样的,不同的模版,不过模版中的值在CNN中就是需要学习的权值参数,而不是我们自己定的,其实我在想,在CNN的首层卷积层我们为什么不能自己定义一些比较好的模版,比如梯度检测算子、边缘检测算子等等,而在CNN的后面的卷积层让它自己学习好了。这样一副图像经过与好些个不同的模版卷积救护得到一些所谓的特征MAP了。在得到这些MAP后,我们可以发现,其实这些MAP本质上也是图像,那么我们对这些图像再进行后续的卷积如何呢?这就自然而然的引出了深层的卷积网络了。基于这样,我们在上面那个图后面在设计卷积模版,就会变成下面这样: 在这里呢我们假设卷积层C1下的每一个MAP又会衍生两个C2下的MAP,就是上面那样。但是在实际的CNN中,为了进一步减少参数,优化模型,通常早卷积层C1与C2之间还有一个降采样层S,什么意思呢?最简单就是对每一个C1下MAP进行缩小吧,比如缩小一倍,就是让C1下的每个MAP中每2*2的窗口取一个平均像素变成一个像素,这样就达到了缩小的目的了,这也就是降采样。像下面这样子。 之后可以再对C2进行降采样,在进行卷积,一直下去就是深度CNN了。
还有个问题就是,我们从S1到C2的时候,我们是选择S1中的一个map卷积得到下一个map,其实我们完全可以用S1中的两个甚至全部的3个MAP进行组合得到下一个MAP,组合方式可以是直接相加,比如说C2中每一个MAP都是S1中的所有MAP进行3个模版卷积然后相加而来的,那么此时的图就是下面这样子:
上面内容 引用博客
https://blog.csdn.net/on2way/article/details/50528346
|