? Website | ? Dokumente | Installationsanleitung | Anleitung | Beispiele | Twitter | LinkedIn | Medium
Optuna ist ein Software-Framework zur automatischen Hyperparameter-Optimierung, das speziell für maschinelles Lernen entwickelt wurde. Es verfügt über eine zwingende Benutzer-API im Define-by-Run -Stil. Dank unserer „Define-by-Run “-API verfügt der mit Optuna geschriebene Code über eine hohe Modularität, und der Benutzer von Optuna kann die Suchräume für die Hyperparameter dynamisch erstellen.
Terminator
veröffentlicht, der in Optuna 4.0 erweitert wird.JournalStorage
veröffentlicht, das in Optuna 4.0 stabilisiert ist.pip install -U optuna
installieren. Finden Sie das Neueste hier und lesen Sie unseren Artikel. Optuna verfügt über folgende moderne Funktionalitäten:
Wir verwenden die Begriffe Studie und Versuch wie folgt:
Bitte beachten Sie den Beispielcode unten. Das Ziel einer Studie besteht darin, den optimalen Satz von Hyperparameterwerten (z. B. regressor
und svr_c
) durch mehrere Versuche (z. B. n_trials=100
) herauszufinden. Optuna ist ein Framework zur Automatisierung und Beschleunigung von Optimierungsstudien .
import ...
# Define an objective function to be minimized.
def objective ( trial ):
# Invoke suggest methods of a Trial object to generate hyperparameters.
regressor_name = trial . suggest_categorical ( 'regressor' , [ 'SVR' , 'RandomForest' ])
if regressor_name == 'SVR' :
svr_c = trial . suggest_float ( 'svr_c' , 1e-10 , 1e10 , log = True )
regressor_obj = sklearn . svm . SVR ( C = svr_c )
else :
rf_max_depth = trial . suggest_int ( 'rf_max_depth' , 2 , 32 )
regressor_obj = sklearn . ensemble . RandomForestRegressor ( max_depth = rf_max_depth )
X , y = sklearn . datasets . fetch_california_housing ( return_X_y = True )
X_train , X_val , y_train , y_val = sklearn . model_selection . train_test_split ( X , y , random_state = 0 )
regressor_obj . fit ( X_train , y_train )
y_pred = regressor_obj . predict ( X_val )
error = sklearn . metrics . mean_squared_error ( y_val , y_pred )
return error # An objective value linked with the Trial object.
study = optuna . create_study () # Create a new study.
study . optimize ( objective , n_trials = 100 ) # Invoke optimization of the objective function.
Notiz
Weitere Beispiele finden Sie in optuna/optuna-examples.
Die Beispiele decken verschiedene Problemstellungen wie Multi-Ziel-Optimierung, eingeschränkte Optimierung, Pruning und verteilte Optimierung ab.
Optuna ist im Python Package Index und in der Anaconda Cloud verfügbar.
# PyPI
$ pip install optuna
# Anaconda Cloud
$ conda install -c conda-forge optuna
Wichtig
Optuna unterstützt Python 3.8 oder neuer.
Außerdem stellen wir Optuna-Docker-Images auf DockerHub bereit.
Optuna verfügt über Integrationsfunktionen mit verschiedenen Bibliotheken von Drittanbietern. Integrationen finden Sie in optuna/optuna-integration und das Dokument ist hier verfügbar.
Optuna Dashboard ist ein Echtzeit-Web-Dashboard für Optuna. Sie können den Optimierungsverlauf, die Hyperparameter-Wichtigkeit usw. in Grafiken und Tabellen überprüfen. Sie müssen kein Python-Skript erstellen, um die Visualisierungsfunktionen von Optuna aufzurufen. Funktionswünsche und Fehlerberichte sind willkommen!
optuna-dashboard
kann über pip installiert werden:
$ pip install optuna-dashboard
Tipp
Bitte testen Sie den Komfort von Optuna Dashboard anhand des folgenden Beispielcodes.
Speichern Sie den folgenden Code als optimize_toy.py
.
import optuna
def objective ( trial ):
x1 = trial . suggest_float ( "x1" , - 100 , 100 )
x2 = trial . suggest_float ( "x2" , - 100 , 100 )
return x1 ** 2 + 0.01 * x2 ** 2
study = optuna . create_study ( storage = "sqlite:///db.sqlite3" ) # Create a new study with database.
study . optimize ( objective , n_trials = 100 )
Probieren Sie dann die folgenden Befehle aus:
# Run the study specified above
$ python optimize_toy.py
# Launch the dashboard based on the storage `sqlite:///db.sqlite3`
$ optuna-dashboard sqlite:///db.sqlite3
...
Listening on http://localhost:8080/
Hit Ctrl-C to quit.
OptunaHub ist eine Feature-Sharing-Plattform für Optuna. Sie können die registrierten Funktionen nutzen und Ihre Pakete veröffentlichen.
optunahub
kann über pip installiert werden:
$ pip install optunahub
# Install AutoSampler dependencies (CPU only is sufficient for PyTorch)
$ pip install cmaes scipy torch --extra-index-url https://download.pytorch.org/whl/cpu
Sie können registrierte Module mit optunahub.load_module
laden.
import optuna
import optunahub
def objective ( trial : optuna . Trial ) -> float :
x = trial . suggest_float ( "x" , - 5 , 5 )
y = trial . suggest_float ( "y" , - 5 , 5 )
return x ** 2 + y ** 2
module = optunahub . load_module ( package = "samplers/auto_sampler" )
study = optuna . create_study ( sampler = module . AutoSampler ())
study . optimize ( objective , n_trials = 10 )
print ( study . best_trial . value , study . best_trial . params )
Weitere Einzelheiten finden Sie in der optunahub-Dokumentation.
Sie können Ihr Paket über optunahub-registry veröffentlichen. Sehen Sie sich das OptunaHub-Tutorial an.
Alle Beiträge zu Optuna sind herzlich willkommen!
Wenn Sie neu bei Optuna sind, schauen Sie sich bitte die guten ersten Ausgaben an. Sie sind relativ einfach, gut definiert und oft ein guter Ausgangspunkt, um sich mit dem Beitragsworkflow und anderen Entwicklern vertraut zu machen.
Wenn Sie bereits zu Optuna beigetragen haben, empfehlen wir Ihnen die anderen Ausgaben, bei denen Beiträge willkommen sind.
Allgemeine Richtlinien zum Mitwirken am Projekt finden Sie unter CONTRIBUTING.md.
Wenn Sie Optuna in einem Ihrer Forschungsprojekte verwenden, zitieren Sie bitte unser KDD-Papier „Optuna: A Next-generation Hyperparameter Optimization Framework“:
@inproceedings { akiba2019optuna ,
title = { {O}ptuna: A Next-Generation Hyperparameter Optimization Framework } ,
author = { Akiba, Takuya and Sano, Shotaro and Yanase, Toshihiko and Ohta, Takeru and Koyama, Masanori } ,
booktitle = { The 25th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining } ,
pages = { 2623--2631 } ,
year = { 2019 }
}
MIT-Lizenz (siehe LIZENZ).
Optuna verwendet die Codes von SciPy- und fdlibm-Projekten (siehe LICENSE_THIRD_PARTY).