GridSearchCV es una excelente manera de probar y optimizar los hiperparámetros automáticamente. Lo uso con TensorFlowEstimator para optimizar learning_rate, batch_size, etc. Sería una gran adición si también puedo usarlo para personalizar otros parámetros en mi modelo personalizado.
Por ejemplo, digamos que tengo un modelo personalizado con una convnet y quiero optimizar el valor de la zancada. Este pseudocódigo explica lo que estoy tratando de lograr.
Utilicé una entrada personalizada de "parámetros" para la función del modelo solo como ejemplo, para no implicar que esta sea necesariamente la forma correcta de implementar esta función.
# My custom model.
# Feature request: New params dict with values filled by GridSearchCV
def cnn_model(X, Y, params):
stride = params['stride']
... custom model definition here ...
# Create the Convnet classifier
cnn_classifier = learn.TensorFlowEstimator(model_fn=cnn_model)
# Grid search on different stride values.
parameters = {'stride': [1, 2, 3],}
grid_searcher = GridSearchCV(cnn_classifier, parameters)
grid_searcher.fit(X, Y)
Está en nuestra lista de TODO. Solo trato de descubrir cómo hacerlo bien para tener una forma general de pasar hiperparámetros a los modelos.
@ilblackdragon ¿ Alguna actualización sobre esto?
La función modelo tiene un argumento params
. TensorFlowEstimator
está obsoleto, use Estimator
que toma el argumento params
. Esto debería funcionar ahora, vuelva a abrir si esto no funciona.
Comentario más útil
@ilblackdragon ¿ Alguna actualización sobre esto?