首页 > 程序开发 > 综合编程 > 其他综合 >

卷积神经网络(CNN)理解

2017-08-28

卷积神经网络(CNN)理解。在卷积神经网络中,拿图像来举个例子,比如图像为m×m像素大小,那么就会有m×m个输入,假如第一层有n个神经元,如果采用全连接的方式,那么共有m×m×n个连接,即需要m×m×n个参数。

在卷积神经网络中,拿图像来举个例子,比如图像为m×m像素大小,那么就会有m×m个输入,假如第一层有n个神经元,如果采用全连接的方式,那么共有m×m×n个连接,即需要m×m×n个参数。

首先我们采用稀疏连接,即每个神经元仅仅连接图像的一部分,比如k×k个像素点,这里的k,暂时不管连接的方式,那么连接数和参数的个数会降低到k×k×n。

其次我们再利用第二个武器,即权值共享,那么这个时候我们的每个神经元连接到k×k区域的像素上的参数是一样的,所以连接数还是k×k×n,但是参数会降低到k×k。

好的,到目前为止,我们使用的是神经元来解释的。现在把神经元也想象成一个二维矩阵,唯一不同的是,这里将原来的一维变成了二维。而这个转变正好适用于CNN在图像上的应用。这时,我们把之前的参数(也叫权值)也看成一个二维矩阵,即一个核。利用卷积操作来运算。所以对应于之前的,我们说只连接图像的一部分,k×k大小,那么这时我们定义一个核,大小也是k×k,然后在这个图像中不停地移动来做卷积运算,假设每次只移动一个像素(即步长stride为1),最后就会得到输出边长为(m?k)/1+1大小的方形矩阵(图像),这时对应之前的神经元概念,其实现在的神经元个数不是n了,而是((m?k)/1+1)2了。注:新生成的图像的边长大小(假设图像和核都宽高相等的)为(imagesize?kernelsize)/stride+1。

OK ,这个时候只是输出了一幅图像,即得到了一个特征映射(我们把上面一段的卷积操作叫做特征映射),通常在图像CNN里面,会产生很多个特征映射,假设我们产生M个映射,即需要生成M个边长为(m?k)/1+1大小的方形矩阵(图像),那么需要多少个参数呢?之前说了,对于一个映射,我们的参数个数为核的大小,即k×k个,那么现在需要的参数个数为k×k×M。

以上就是CNN中的卷积层的核心概念,其中用到的思想包括:稀疏交互,权值共享,多特征映射。

相关文章
最新文章
热点推荐