数据预处理

深入理解CNN的细节

点点圈 提交于 2020-04-11 19:57:11
数据预处理(Data Preprocessing) 零均值化(Mean subtraction) 为什么要零均值化? 人们对图像信息的摄取通常不是来自于像素色值的高低,而是来自于像素之间的相对色差。零均值化并没有消除像素之间的相对差异(交流信息),仅仅是去掉了直流信息的影响。 数据有过大的均值也可能导致参数的梯度过大。 如果有后续的处理,可能要求数据零均值,比如PCA。 假设数据存放在一个矩阵 X 中,X 的形状为(N,D),N 是样本个数,D 是样本维度,零均值化操作可用 python 的 numpy 来实现: X -= numpy.mean(X, axis=0) 即 X 的每一列都减去该列的均值。 对于灰度图像,也可以减去整张图片的均值: X -= numpy.mean(X) 对于彩色图像,将以上操作在3个颜色通道内分别进行即可。 归一化(Normalization) 为什么要归一化? 归一化是为了让不同纬度的数据具有相同的分布规模。 假如二维数据数据(x1,x2)两个维度都服从均值为零的正态分布,但是x1方差为100,x2方差为1。可以想像对 (x1,x2)进行随机采样并在而为坐标系中标记后的图像,应该是一个非常狭长的椭圆形。 对这些数据做特征提取会用到以下形式的表达式: S = w1*x1 + w2*x2 + b 那么: dS / dw1 = x1 dS / dw2 =