Also, ich verstehe, dass die Normalisierung wichtig ist, ein neuronales Netzwerk zu trainieren.Normalisieren Sie das Validierungsset für ein Neuronales Netzwerk in Keras
Ich verstehe auch, dass ich Validierungs- und Test-Set zu normalisieren haben mit den Parametern aus dem Trainingssatz (siehe zum Beispiel die Diskussion: https://stats.stackexchange.com/questions/77350/perform-feature-normalization-before-or-within-model-validation)
Meine Frage ist: Wie kann ich tun dies in Keras?
Was ich zur Zeit tun, ist:
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)
Aber hier, ich erste normalisieren die Daten w.r.t. der gesamte Datensatz und dann Split die Validierungsmenge, die nach der oben genannten Diskussion falsch ist.
Es wäre keine große Sache, die mittlere und Standardabweichung vom Trainingssatz (training_mean und training_std) zu speichern, aber wie kann ich die Normalisierung mit dem training_mean und training_std auf dem Validierungsset separat anwenden?