2222
1、数据输入层
预处理的方式:
假定X
是[N*D]维矩阵(N是样本数据量,D为单张图片的数据向量长度)
第一步,去均值:最常见的图片数据预处理。目的是输入数据各个维度的数据都中心化到0。
1)对待训练的每一张图片的特征,都减去全部训练集图片的特征均值;使用python的numpy工具包,这一步可以用X -= np.mean(X, axis = 0)
实现
个人理解,假设有1000张图片,数据格式227*227*3,那么把1000张图片的每个点求均值,最后形成一个227*227*3的矩阵,每一张图片再减去它;
2)可以直接求出所有像素的均值,然后每个像素点都减掉这个相同的值;
个人理解,1000张图片分别在r、g、b上求三个均值,每一张图片的每个点分别减去它;
第二步-1,归一化:目的是保证所有维度上数据都在一个变化幅度上。
1)在数据都去均值之后,每个维度上的数据都除以这个维度上数据的标准差(X /= np.std(X, axis = 0)
)。
2)除以数据绝对值最大值,以保证所有的数据归一化后都在-1到1之间。
由于图像像素的值变化区间都在[0,255]之间,所以其实图像输入数据天生幅度就是一致的。所以不需要进行归一化。
第二步-2,PCA/白化
1)经过去均值操作之后,我们可以计算数据的协方差矩阵,从而可以知道数据各个维度之间的相关性
得到的结果矩阵中元素(i,j)表示原始数据中,第i维和第j维之间的相关性。
实际卷积神经网中,我们并没有用到去相关和whitening操作。只会涉及去均值、归一化。