数据输入层:Input Layer
1、数据预处理
进行预处理的主要原因是:
- 输入数据单位不一样,可能会导致神经网络收敛速度慢,训练时间长
- 数据范围大的输入在模式分类中的作用可能偏大,而数据范围小的作用就有可能偏小
- 由于神经网络中存在的激活函数是有值域限制的,因此需要将网络训练的目标数据映射到激活函数的值域
- S形激活函数在(0,1)区间以外区域很平缓,区分度太小。例如S形函数f(X),f(100)与f(5)只相差0.0067
2、常见数据预处理方式
数据标准化(normalization):
将数据按比例缩放,使之落入一个小的特定区间。
标准化常用的是Z-Score, 记住,这是要减去自己数据的均值和除以自己的标准差(不是方差)
大家在用Fine-tune pretrained model,比如Imagenet, 程序里面经常是减去的Imagenet的均值和方差,这样是不对的,大家在跑程序的时候要注意了。
- 归一化
每个像素:新数据 = [(原数据-均值)/ 标准差 ] + 偏执
- 去均值
将输入数据的各个维度中心化到0
数据中心化:是指变量减去它的均值
- PCA/白化
用PCA降维
白化是对数据的每个特征抽上的幅度归一化
数据增强:
即增加训练数据,则能够提升算法的准确率,因为这样可以避免过拟合,而避免了过拟合你就可以增大你的网络结构了。当训练数据有限的时候,可以通过一些变换来从已有的训练数据集中生成一些新的数据,来扩大训练数据。数据增强的方法有:https://github.com/aleju/imgaug
水平翻转:
随机裁剪:
如原始图像大小为256*256,随机裁剪出一些图像224*224的图像。如下图,红色方框内为随机裁剪出的224*224的图片。 AlexNet 训练时,对左上、右上、左下、右下、中间做了5次裁剪,然后翻转,得到10张裁剪的图片。防止大网络过拟合(under ubstantial overfitting)
其他如:
平移变换;
旋转/仿射变换;
高斯噪声、模糊处理
对颜色的数据增强:图像亮度、饱和度、对比度变化。