Verwendung von Optuna, einem Framework zur Optimierung von Hyperparametern. Es wurde von Preferred Networks erstellt.
Offizielles Tutorial https://optuna.readthedocs.io/en/stable/tutorial/first.html API-Referenz https://optuna.readthedocs.io/en/stable/reference/index.html
Definieren Sie die Zielfunktion und den Suchraum. Erstellen Sie als Nächstes eine "Studien" -Instanz und führen Sie die Optimierung mit der "Optimierungs" -Methode durch.
import optuna
#Objektive Funktionsdefinition
def objective(trial):
#Beschreiben Sie hier den Suchraum
return ***Zielfunktion**Kann maximiert oder minimiert werden***
Der Erkundungsraum ist
Setze mit trial.suggest_
.
Übergeben Sie es wie folgt als Ganzzahl, Kategorie usw.
Wählen Sie im Beispiel unter "suggest_categorical (Name, Auswahlmöglichkeiten)" 3 für den Parameter "Kernel" aus.
suggest_int (name, low, high, step = 1, log = False)
gibt den Wert eines Integer-Parameters an.
suggest_uniform (name, low, high)
gibt einen linearen und kontinuierlichen Wert zwischen low
und high
an
suggest_loguniform (name, low, high)
gibt kontinuierliche Werte in logarithmischen Intervallen an.
suggest_float (Name: str, niedrig: float, hoch: float, *, Schritt: Optional [float] = Keine)
enthält den Wert des Gleitkommaparameters.
Mit suggest_discrete_uniform (name, low, high, q)
wird der Wert aus dem Bereich low
, high
abgetastet und der Dispersionswert in Schritt q angegeben.
def objective(trial):
#Wie man einen Suchraum gibt
# 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)
#Automatische Optimierung von Hyperparametern
study = optuna.create_study()
#n_Legt die Anzahl der Iterationen fest, die in Versuchen untersucht werden sollen.
study.optimize(objective, n_trials = 100)
Recommended Posts