我是一个初学者,我想通过使用早期停止来优化cnn的超参数。
我不确定下面的方法是否正确,同时可以使用尽早停止以防止模型在训练过程中过度拟合,从而为cnn架构找到最佳的超参数。
stratKFold = StratifiedKFold(n_splits=10, shuffle=True, random_state=seed)
scoring = {'Precision': make_scorer(precision_score, average='macro')}
param_grid = {'number_neurons':number_neurons,'dropout_rate': dropout_rate,
'learn_rate':learn_rate}
model = KerasClassifier(build_fn=base_model)
grid_cv = GridSearchCV(estimator=model, param_grid=param_grid, cv=stratKFold, scoring=scoring, refit='acc')
grid_result = grid_cv.fit(X, y, epochs=300, validation_data=(X_val, y_val),
callbacks=[EarlyStopping(monitor='val_loss', patience=10, verbose=0,
restore_best_weights=True)])
如果我正确理解我的代码,那么每次拆分后10次运行中的每一次都始终使用相同的EarlyStopping验证数据吗? 如果是这样,那我想知道这是否正确?还是不应该对10个运行中的每个运行使用不同的EarlyStopping验证数据集?
非常感谢您的所有提示