Comment utiliser Optuna, un framework d'optimisation des hyperparamètres. Il a été créé par Preferred Networks.
Tutoriel officiel https://optuna.readthedocs.io/en/stable/tutorial/first.html Référence API https://optuna.readthedocs.io/en/stable/reference/index.html
Définissez la fonction objectif et l'espace de recherche.
Ensuite, construisez une instance study
et optimisez-la avec la méthode ʻoptimize`.
import optuna
#Définition de la fonction objective
def objective(trial):
#Décrivez l'espace de recherche ici
return ***Fonction objective**Peut être maximisé ou minimisé***
L'espace d'exploration est
Défini avec trial.suggest_
.
Passez-le comme un entier, une catégorie, etc. comme suit.
Dans suggest_categorical (nom, choix)
, dans l'exemple, sélectionnez 3 pour le paramètre'kernel '.
suggest_int (name, low, high, step = 1, log = False)
donne la valeur d'un paramètre entier.
suggest_uniform (name, low, high)
donne une valeur linéaire et continue entre low
et high
suggest_loguniform (nom, faible, élevé)
donne des valeurs continues dans des intervalles logarithmiques.
suggest_float (nom: str, low: float, high: float, *, step: facultatif [float] = None)
contiendra la valeur du paramètre à virgule flottante.
Avec suggest_discrete_uniform (name, low, high, q)
, la valeur est échantillonnée à partir de la plage low
, high
, et la valeur de dispersion est donnée à l'étape q.
def objective(trial):
#Comment donner un espace de recherche
# Categorical parameter
kernel = trial.suggest_categorical('kernel', ['linear', 'poly', 'rbf'])
# Int parameter
num_layers = trial.suggest_int('num_layers', 1, 3)
# Uniform parameter
dropout_rate = trial.suggest_uniform('dropout_rate', 0.0, 1.0)
# Loguniform parameter
learning_rate = trial.suggest_loguniform('learning_rate', 1e-5, 1e-2)
# Discrete-uniform parameter
drop_path_rate = trial.suggest_discrete_uniform('drop_path_rate', 0.0, 1.0, 0.1)
#Optimisation automatique des hyper paramètres
study = optuna.create_study()
#n_Définit le nombre d'itérations à rechercher dans les essais.
study.optimize(objective, n_trials = 100)
Recommended Posts