? Situs web | ? Dokumen | Panduan Instalasi | Tutorial | Contoh | Twitter | LinkedIn | Sedang
Optuna adalah kerangka perangkat lunak pengoptimalan hyperparameter otomatis, yang dirancang khusus untuk pembelajaran mesin. Ini menampilkan API pengguna gaya yang ditentukan demi dijalankan yang imperatif. Berkat API yang kami tentukan demi dijalankan , kode yang ditulis dengan Optuna memiliki modularitas tinggi, dan pengguna Optuna dapat secara dinamis membuat ruang pencarian untuk hyperparameter.
Terminator
, yang diperluas di Optuna 4.0.JournalStorage
, yang distabilkan di Optuna 4.0.pip install -U optuna
. Temukan yang terbaru di sini dan periksa artikel kami. Optuna memiliki fungsi modern sebagai berikut:
Kami menggunakan istilah belajar dan uji coba sebagai berikut:
Silakan lihat contoh kode di bawah ini. Tujuan dari penelitian adalah untuk mengetahui kumpulan nilai hyperparameter yang optimal (misalnya, regressor
dan svr_c
) melalui beberapa percobaan (misalnya, n_trials=100
). Optuna adalah kerangka kerja yang dirancang untuk otomatisasi dan percepatan studi optimasi.
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.
Catatan
Contoh lainnya dapat ditemukan di optuna/optuna-examples.
Contohnya mencakup beragam pengaturan masalah seperti optimasi multi-tujuan, optimasi terbatas, pemangkasan, dan optimasi terdistribusi.
Optuna tersedia di Indeks Paket Python dan di Anaconda Cloud.
# PyPI
$ pip install optuna
# Anaconda Cloud
$ conda install -c conda-forge optuna
Penting
Optuna mendukung Python 3.8 atau lebih baru.
Kami juga menyediakan image buruh pelabuhan Optuna di DockerHub.
Optuna memiliki fitur integrasi dengan berbagai perpustakaan pihak ketiga. Integrasi dapat ditemukan di optuna/optuna-integration dan dokumennya tersedia di sini.
Dasbor Optuna adalah dasbor web waktu nyata untuk Optuna. Anda dapat memeriksa riwayat pengoptimalan, kepentingan hyperparameter, dll. dalam grafik dan tabel. Anda tidak perlu membuat skrip Python untuk memanggil fungsi visualisasi Optuna. Permintaan fitur dan laporan bug dipersilakan!
optuna-dashboard
dapat diinstal melalui pip:
$ pip install optuna-dashboard
Tip
Silakan lihat kenyamanan Dashboard Optuna menggunakan contoh kode di bawah ini.
Simpan kode berikut sebagai 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 )
Kemudian coba perintah di bawah ini:
# 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 adalah platform berbagi fitur untuk Optuna. Anda dapat menggunakan fitur terdaftar dan mempublikasikan paket Anda.
optunahub
dapat diinstal melalui 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
Anda dapat memuat modul terdaftar dengan optunahub.load_module
.
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 )
Untuk lebih jelasnya, silakan merujuk ke dokumentasi optunahub.
Anda dapat mempublikasikan paket Anda melalui optunahub-registry. Lihat tutorial OptunaHub.
Setiap kontribusi untuk Optuna sangat kami harapkan!
Jika Anda baru mengenal Optuna, silakan periksa edisi pertama yang bagus. Ini adalah titik awal yang relatif sederhana, terdefinisi dengan baik, dan seringkali merupakan titik awal yang baik bagi Anda untuk mengenal alur kerja kontribusi dan pengembang lainnya.
Jika Anda sudah berkontribusi pada Optuna, kami merekomendasikan isu sambutan kontribusi lainnya.
Untuk pedoman umum tentang cara berkontribusi pada proyek, lihat CONTRIBUTING.md.
Jika Anda menggunakan Optuna di salah satu proyek penelitian Anda, harap kutip makalah KDD kami "Optuna: Kerangka Pengoptimalan Hyperparameter Generasi Berikutnya":
@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 }
}
Lisensi MIT (lihat LISENSI).
Optuna menggunakan kode dari proyek SciPy dan fdlibm (lihat LICENSE_THIRD_PARTY).