CNN入门系列(1)——Input of CNN and Convolutional Layer

来源:互联网 发布:邮箱大师mac版本 编辑:程序博客网 时间:2024/05/08 14:23

参考:cs231n

这个系列写的是我对cs231n的一些翻译和理解

————————————————————————————————————————————

input of CNN

在刚接触CNN的时候,我是看到的几乎所有的教程都是已识别灰度图像入门的,灰度图像在计算机中的表示是一个二维的矩阵,每个(x. y)对应一个值在[0, 255]之间的数字。但是彩色图像应该怎么作为输入呢?

举个例子:灰色图像: [101, 102, 103...   111, 112, 113...]彩色图像:[[101, 102, 103], [104, 105, 106]...[111, 112, 113], [114, 115, 116]...]

上面这张图是cs231n里给的可视化图片,简单说下图片下面的英文:神经卷积网络的每层通过一个神经元将一个3D输入卷转化为3D输出卷。在这个例子里,红色层(最左边那一层)储存输入图片,所以他的宽度和高度是图片的尺寸,深度是3(RGB三种颜色)。
也就是说我们输入的彩色图片是一个W*H*3的矩阵,灰色图片是W*H*1的矩阵。

Convolutional Layer

上面就是卷积层的输入,对于一个彩色图片来说,卷积层的输入是3个feature map,而对于灰色图片来说,输入仅仅是1个feature map。
然后选择一个卷积核对feature map做卷积操作。

举个例子:假设3个feature map的大小均为32*32,有一个卷积核的大小是5*5*3(前面5*5是宽和高,后面3是对应feature map有3个),zero-padding为2,步长为1。我们采用权值共享,再加上偏移量后,就会得到3个大小为32*32的卷积输出(因为有3个feature map)将这三个输出矩阵对应位置相加,就会得到一个新的feature map。有多少个卷积核就会有多少个feature map。

参考:卷积神经网络 一般性结构卷积核个数和 输入输出的关系以及输入输出的个数的说明

一个重要的结论
在进行卷积层的运算的时候,卷积核的维数是输入的feature map的个数,卷积核的个数,就是输出的feature map的数量。所以在上图我们就能看到,进行卷积的volume的depth在逐渐的变长(因为我们要获取多个特征,所以卷积核的数量会一层比一层多。为了减少参数,采取了pooling的方法,所以width和height的长度会减少)

一些名词

卷积核(kernel)/局部切片(patch)/滤波器(filter)
感知域(receptive field)
步长(stride)
零填充(zero-padding)

最后附上cs231n对卷积层的总结

1 0
原创粉丝点击