Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

A hyperparameter optimization framework

License

NotificationsYou must be signed in to change notification settings

optuna/optuna

Repository files navigation

Optuna: A hyperparameter optimization framework

PythonpypicondaGitHub licenseRead the DocsCodecov

🔗Website| 📃Docs| ⚙️Install Guide| 📝Tutorial| 💡Examples|Twitter|LinkedIn|Medium

Optuna is an automatic hyperparameter optimization software framework, particularly designedfor machine learning. It features an imperative,define-by-run style user API. Thanks to ourdefine-by-run API, the code written with Optuna enjoys high modularity, and the user ofOptuna can dynamically construct the search spaces for the hyperparameters.

📢 News

🔥 Key Features

Optuna has modern functionalities as follows:

Basic Concepts

We use the termsstudy andtrial as follows:

  • Study: optimization based on an objective function
  • Trial: a single execution of the objective function

Please refer to the sample code below. The goal of astudy is to find out the optimal set ofhyperparameter values (e.g.,regressor andsvr_c) through multipletrials (e.g.,n_trials=100). Optuna is a framework designed for automation and acceleration ofoptimizationstudies.

Sample code with scikit-learn

Open in Colab

import ...# Define an objective function to be minimized.defobjective(trial):# Invoke suggest methods of a Trial object to generate hyperparameters.regressor_name=trial.suggest_categorical('regressor', ['SVR','RandomForest'])ifregressor_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)returnerror# 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.

Note

More examples can be found inoptuna/optuna-examples.

The examples cover diverse problem setups such as multi-objective optimization, constrained optimization, pruning, and distributed optimization.

Installation

Optuna is available atthe Python Package Index and onAnaconda Cloud.

# PyPI$ pip install optuna
# Anaconda Cloud$ conda install -c conda-forge optuna

Important

Optuna supports Python 3.8 or newer.

Also, we provide Optuna docker images onDockerHub.

Integrations

Optuna has integration features with various third-party libraries. Integrations can be found inoptuna/optuna-integration and the document is availablehere.

Supported integration libraries

Web Dashboard

Optuna Dashboard is a real-time web dashboard for Optuna.You can check the optimization history, hyperparameter importance, etc. in graphs and tables.You don't need to create a Python script to callOptuna's visualization functions.Feature requests and bug reports are welcome!

optuna-dashboard

optuna-dashboard can be installed via pip:

$ pip install optuna-dashboard

Tip

Please check out the convenience of Optuna Dashboard using the sample code below.

Sample code to launch Optuna Dashboard

Save the following code asoptimize_toy.py.

importoptunadefobjective(trial):x1=trial.suggest_float("x1",-100,100)x2=trial.suggest_float("x2",-100,100)returnx1**2+0.01*x2**2study=optuna.create_study(storage="sqlite:///db.sqlite3")# Create a new study with database.study.optimize(objective,n_trials=100)

Then try the commands below:

# 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

OptunaHub is a feature-sharing platform for Optuna.You can use the registered features and publish your packages.

Use registered features

optunahub can be installed via pip:

$ 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

You can load registered module withoptunahub.load_module.

importoptunaimportoptunahubdefobjective(trial:optuna.Trial)->float:x=trial.suggest_float("x",-5,5)y=trial.suggest_float("y",-5,5)returnx**2+y**2module=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)

For more details, please refer tothe optunahub documentation.

Publish your packages

You can publish your package viaoptunahub-registry.See theOptunaHub tutorial.

Communication

Contribution

Any contributions to Optuna are more than welcome!

If you are new to Optuna, please check thegood first issues. They are relatively simple, well-defined, and often good starting points for you to get familiar with the contribution workflow and other developers.

If you already have contributed to Optuna, we recommend the othercontribution-welcome issues.

For general guidelines on how to contribute to the project, take a look atCONTRIBUTING.md.

Reference

If you use Optuna in one of your research projects, please citeour KDD paper "Optuna: A Next-generation Hyperparameter Optimization Framework":

BibTeX
@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}}

License

MIT License (seeLICENSE).

Optuna uses the codes from SciPy and fdlibm projects (seeLICENSE_THIRD_PARTY).


[8]ページ先頭

©2009-2025 Movatter.jp