摘要:
本文用于记载学习CNN过程的一些心得~~欢迎大家轻拍~~~
1.在CNN中希望保持卷积后的图像与原始图像的大小相同,需要如何进行填补?
假设原图像大小为了N,滤波器尺寸为F,步长为s。
当s为1的时候:
需要进行zero padding的个数P与原始图像大小无关,只与滤波器的大小F有关。
具体表现为:P=(F-1)/2。(这个自己把公式写一下就明白了)
当s不为1的时候,其实是与原始图像大小是有关系的。
padding的目的其实在于保持卷积前后的图像大小保持一致。(否则每次做卷积,图像尺寸都会不断的缩小)
当s为1的时候:
需要进行zero padding的个数P与原始图像大小无关,只与滤波器的大小F有关。
具体表现为:P=(F-1)/2。(这个自己把公式写一下就明白了)
当s不为1的时候,其实是与原始图像大小是有关系的。
padding的目的其实在于保持卷积前后的图像大小保持一致。(否则每次做卷积,图像尺寸都会不断的缩小)
2.在CNN中,假设输入图像尺寸是32*32*3,有10个卷积核,每个卷积核的大小为5*5,请问此卷积层有多少个参数?
每个卷积核有3*5*5+1=76个参数(不要忘记每个卷积核有一个偏置项)
总共10个卷积核,故一共760个参数。
总共10个卷积核,故一共760个参数。
3.1*1的卷积核的作用
1.改变维度。2.对上一层的feature map的线性叠加。
4.池化层的作用:
池化层的作用是为了做下采样,减少后面参数的学习。常用的池化是max pooling。
把池化看成一种下采样的行为,下采样之后希望不会丢失太多原来的信息。那么max pooling就能够很好地做到这一点,因为pooling的对象是卷积之后,再经过神经元的**的数值。这个数值的大小直接反应了神经元**的程度,数值越大,**的程度也就越高,直观上这些点的信息量也越丰富。采用max pooling的时候就能够把这些**程度大的神经元挑出来。
而比较于averge pooling(平均池化),受**程度大的神经元可能会被一些0**的神经元所降权。
5.池化的作用时下采样,卷积也可以达到下采样,那么能否不要池化?
可以的,有一些网络就是没有池化层,全卷积神经网络。
6.卷积之后的图像尺寸计算公式以及池化的公式。
池化:
卷积:
7.卷积层中是如何计算的?
简单点说就是卷积核中的权重与对应区域的像素点相乘再相加(是在所有channel上做的,并非一个平面上),之后再经过神经元(**函数)的映射。
8.卷积之后图像的深度由什么参数决定?
由所使用的卷积核个数决定。
9.CNN的网络结构一般是如何组成的?
意思就是:多个{多个{卷积-神经元**(ReLu)}之后跟一个池化}再跟多个全连接层,最后经过SoftMax输出。
9.什么是feature map?
其实所谓的feature map就是卷积之后的结果。更具体来说就是,一张图(矩阵)经过卷积核(kernal)卷积运算之后得到的一张新的图(矩阵),就是feature map。
10.什么是drop-out?
在训练阶段随机丢弃一定比例的神经元。
特别注意的是,每一次迭代训练都会进行新的drop-out,比如训练迭代次数100次时,会进行100次的drop-out,因此从某种意义上叫这100次训练的都是不完全一样的网络。
特别注意的是,每一次迭代训练都会进行新的drop-out,比如训练迭代次数100次时,会进行100次的drop-out,因此从某种意义上叫这100次训练的都是不完全一样的网络。
11.为什么L1可以减少神经网络过拟合?
模型过拟合一个很重要的原因就是模型参数太多(容量太大),减少过拟合的方法自然就是减少模型的参数。L1正则能够参数(权重)趋于0。因此使得模型的参数变少,减少过拟合。