所以,我明白規範化對於訓練神經網絡很重要。規範Keras中的神經網絡的驗證集合
我也明白,我必須正常化validation-和測試設置與訓練組的參數(例如見這個討論:https://stats.stackexchange.com/questions/77350/perform-feature-normalization-before-or-within-model-validation)
我的問題是:如何做到這一點的Keras?
什麼我目前做的是:
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
from keras.callbacks import EarlyStopping
def Normalize(data):
mean_data = np.mean(data)
std_data = np.std(data)
norm_data = (data-mean_data)/std_data
return norm_data
input_data, targets = np.loadtxt(fname='data', delimiter=';')
norm_input = Normalize(input_data)
model = Sequential()
model.add(Dense(25, input_dim=20, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
early_stopping = EarlyStopping(monitor='val_acc', patience=50)
model.fit(norm_input, targets, validation_split=0.2, batch_size=15, callbacks=[early_stopping], verbose=1)
但在這裏,我首先正常化數據w.r.t.整個數據集和,然後拆分驗證集,這是錯誤的根據上述討論。
保存來自訓練集(training_mean和training_std)的平均值和標準偏差並不是什麼大問題,但我怎樣才能將training_mean和training_std分別應用於驗證集的歸一化?