Seite 1 von 1

Kombinieren von GridSearchCV mit EarlyStopping?

Verfasst: Freitag 29. November 2019, 02:21
von CodeIt
Hallo, ich möchte optimale Hyperparameter (Lernrate, Anzahl an Epochen, Dropout-rate) eines Neuronales Netzes mithilfe von GridSearchCV bestimmen.

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)
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

Re: Kombinieren von GridSearchCV mit EarlyStopping?

Verfasst: Freitag 29. November 2019, 12:54
von ThomasL
Du liegst imho mit deinen Zweifeln schon ganz richtig.
Denn der Sinn von GridSearchCV ist ja nicht ein Modell optimal zu trainieren sondern die optimalen Hyperparameter zu finden.
Wenn du die dann hast, dann kannst du beim trainieren des Modells EarlyStopping verwenden.

Re: Kombinieren von GridSearchCV mit EarlyStopping?

Verfasst: Freitag 29. November 2019, 13:39
von CodeIt
ok, vielen Dank. Das würde dann in etwa heißen, man könnte zwar neben den anderen Hyperparameter auch für die Epochenanzahl ein Suchraster in GridSearchCV festlegen, jedoch würde dieses Epochenanzahl-Suchraster lediglich dazu dienen optimale Werte für die restlichen Hyperparameter zu finden, während die endgültige optimale Epochenanzahl dann beim Trainieren des finalen Modells mithilfe von EarlyStopping festgestellt wird.