keras 自帶資料的標準化方法
阿新 • • 發佈:2019-02-17
1. featurewise_center:布林值,使輸入資料集去中心化(均值為0), 按feature執行。2. samplewise_center:布林值,使輸入資料的每個樣本均值為0。3. featurewise_std_normalization:布林值,將輸入除以資料集的標準差以完成標準化, 按feature執行。4. samplewise_std_normalization:布林值,將輸入的每個樣本除以其自身的標準差。從原始碼來解讀:
使用說明:if self.samplewise_center: x -= np.mean(x, keepdims=True) #減去每個批次feature的平均值實現0中心化 if self.samplewise_std_normalization: x /= (np.std(x, keepdims=True) + K.epsilon()) #除以每個批次feature的標準差 if self.featurewise_center: self.mean = np.mean(x, axis=(0, self.row_axis, self.col_axis)) #在底層為tendorflow時這裡#self.row_axis=1,self.col_axis=2,即axis(0,1,2)。因為x是一個4維np,最後一維即影象的通道數,所 #以這裡計算機的每一通道的畫素平均值。 broadcast_shape = [1, 1, 1] broadcast_shape[self.channel_axis - 1] = x.shape[self.channel_axis] self.mean = np.reshape(self.mean, broadcast_shape) #對應mean的shape x -= self.mean #對每批次的資料減對應通道畫素的均值 if self.featurewise_std_normalization: self.std = np.std(x, axis=(0, self.row_axis, self.col_axis)) broadcast_shape = [1, 1, 1] broadcast_shape[self.channel_axis - 1] = x.shape[self.channel_axis] self.std = np.reshape(self.std, broadcast_shape) x /= (self.std + K.epsilon()) #對每批次的資料除以對應通道畫素的標準差
ImageDataGenerator(
featurewise_center=True, #均值為0
featurewise_std_normalization=True,#標準化處理
samplewise_center=False,
samplewise_std_normalization=False,
)