关于CIFAR-10分类问题的一个简单的卷积神经网络
结构:[INPUT- CONV - RELU - POOL - FC]
INPUT: 32x32x3的原始图片
CONV:选择12个filters,得到的输出维度为32x32x12(???)
RELU:是一个elementwise的activation函数,输出维度仍然为32x32x12
POOL:进行一个下采样操作,得到的输出维度为16x16x12
FC:计算每一个类别对应的得分,得到的输出维度为1x1x10
值得注意的是,以上提到的所有层中,有些层(CONV/FC)是有参数的,有些层(RELU/POOL)是没有参数的;有些层(CONV/FC/POOL)是有超参数的,有些层(RELU)是没有超参数的。特别地,CONV/FC层不仅是input volume的参数,还是权重和偏置的参数;而RELU/POOL都是固定的函数。CONV/FC层的参数将会用梯度下降的方法进行训练。
Convolutional Layer
一个典型的filter(位于CNN的第一层)通常的大小为5x5x3,其中3主要是因为图片的通道数为3,假设第一层的filter的数量为12,每一个都会产生一个2维的actiavtion map,沿着depth维度将这些map叠加起来,得到输出。
Spatial arrangement
size of output volume由三个超参数决定,分别是depth,stride和zero-padding。
output volume的第一个超参数是depth,它对应着我们需要使用的filter的个数,每一个neuron在沿着depth column方向对应的图片区域都是一致的;stride为步长;zero-padding的好处是我们可以控制输出的volume(常见的做法是用来控制输入和输出的大小保持一致)
W -- input volume size
F -- receptive filter size of the Conv layer neurons
S -- stride
P -- the amount of zero padding,当S=1时,P=(F-1)/2可以保持input volume和output volume一致
当计算出的output volume不是整数时,会对图片进行padding或者对图片进行裁切
Parameter sharing
每一个depth slice上的neurons共享权重和偏置。
但是当输入为图片中心有人脸的图片时,我们可能希望学习到的是在空间中的不同位置的眼睛和头发的特征,此时我们需要放松参数共享的假设,我们将这种layer称为locally-connected layer。
总结
对于卷积层:
输入图片volume为W1×H1×D1
需要4个超参数:
- filter的数量K;
- filter的大小F;
- 步长S;
- zero-padding大小
产生的volume的大小为W2×H2×D2 ,其中:
- W2=(W1−F+2P)/S+1
- H2=(H1−F+2P)/S+1 (i.e. width and height are computed equally by symmetry)
- D2=K