Kombinieren von GridSearchCV mit EarlyStopping?
Verfasst: Freitag 29. November 2019, 02:21
Hallo, ich möchte optimale Hyperparameter (Lernrate, Anzahl an Epochen, Dropout-rate) eines Neuronales Netzes mithilfe von GridSearchCV bestimmen.
Anstatt die Anzahl der Epochen über ein Grid zu bestimmen, frage ich mich, ob nicht stattdessen
EarlyStopping eingesetzt werden könnte? Damit könnte zumindest die Zeit für die Suche verkürzt werden. Andererseits habe ich gewisse Zweifel, ob dadurch nicht der Sinn und Zweck von GridSearchCV zerstört wird?
Wie würdet Ihr die optimale Anzahl an Epochen bestimmen?
Über Meinungen und/oder Erfahrungen dazu bedanke ich mich im voraus
Code: Alles auswählen
def create_model (learn_rate=0.01, dropout_rate=0.5):
model = Sequential()
model.add(Dense(512, activation='relu))
model.add(Dropout(dropout_rate))
model.add(Dense(1, activation='sigmoid'))
optimizer = Adram(lr=Learn_rate))
model.compile(loss='binary_crossentropy', optimizer=optimizer, metrics=['accuracy'])
return model
model = KerasClassifier(build_fn=create_model, epochs=100, batch_size=10, verbose=0)
learn_rate = [0.0001, 0.001, 0.01]
dropout_rate = [0.0, 0.3, 0.5, 0.7]
epochs = [20, 30, 60]
param_grid = dict(learn_rate=learn_rate, dropout=dropout_rate, epochs=epochs)
grid = GridSearchCV(estimator=model, param_grid=param_grid, n_jobs=-1, cv=3)
EarlyStopping eingesetzt werden könnte? Damit könnte zumindest die Zeit für die Suche verkürzt werden. Andererseits habe ich gewisse Zweifel, ob dadurch nicht der Sinn und Zweck von GridSearchCV zerstört wird?
Wie würdet Ihr die optimale Anzahl an Epochen bestimmen?
Über Meinungen und/oder Erfahrungen dazu bedanke ich mich im voraus