Hyperopt adalah perpustakaan Python untuk optimasi serial dan paralel atas ruang pencarian yang canggung, yang mungkin termasuk dimensi bernilai nyata, diskrit, dan bersyarat.
Instal Hyperopt dari PYPI
pip install hyperoptUntuk menjalankan contoh pertama Anda
# define an objective function
def objective ( args ):
case , val = args
if case == 'case 1' :
return val
else :
return val ** 2
# define a search space
from hyperopt import hp
space = hp . choice ( 'a' ,
[
( 'case 1' , 1 + hp . lognormal ( 'c1' , 0 , 1 )),
( 'case 2' , hp . uniform ( 'c2' , - 10 , 10 ))
])
# minimize the objective over the space
from hyperopt import fmin , tpe , space_eval
best = fmin ( objective , space , algo = tpe . suggest , max_evals = 100 )
print ( best )
# -> {'a': 1, 'c2': 0.01420615366247227}
print ( space_eval ( space , best ))
# -> ('case 2', 0.01420615366247227} Jika Anda seorang pengembang dan ingin berkontribusi, silakan ikuti langkah -langkah ini.
Buat akun di GitHub jika Anda belum memilikinya.
Fork The Project Repository: Klik tombol 'Fork' di dekat bagian atas halaman. Ini membuat salinan kode di bawah akun Anda di akun pengguna GitHub. Untuk detail lebih lanjut tentang cara membayar repositori, lihat panduan ini.
Klone garpu Anda dari repo hyperopt dari akun github Anda ke disk lokal Anda:
git clone https://github.com/ < github username > /hyperopt.git
cd hyperopt Menciptakan lingkungan dengan:
$ python3 -m venv my_env atau $ python -m venv my_env atau dengan conda:
$ conda create -n my_env python=3
Aktifkan lingkungan:
$ source my_env/bin/activate
atau dengan conda:
$ conda activate my_env
Instal dependensi untuk ekstra (Anda akan membutuhkan ini untuk menjalankan pytest): Linux/UNIX: $ pip install -e '.[MongoTrials, SparkTrials, ATPE, dev]'
atau Windows:
pip install -e .[MongoTrials]
pip install -e .[SparkTrials]
pip install -e .[ATPE]
pip install -e .[dev]Tambahkan remote hulu. Ini menyimpan referensi ke repositori hyperopt utama, yang dapat Anda gunakan untuk menjaga repositori Anda disinkronkan dengan perubahan terbaru:
$ git remote add upstream https://github.com/hyperopt/hyperopt.git
Anda sekarang harus memiliki instalasi hyperopt yang berfungsi, dan repositori git Anda dikonfigurasi dengan benar. Langkah selanjutnya sekarang jelaskan proses memodifikasi kode dan mengirimkan PR:
Sinkronisasi cabang master Anda dengan cabang master hulu:
git checkout master
git pull upstream masterBuat cabang fitur untuk menahan perubahan pengembangan Anda:
$ git checkout -b my_feature
dan mulailah membuat perubahan. Selalu gunakan cabang fitur. Ini adalah praktik yang baik untuk tidak pernah bekerja di cabang utama!
Kami merekomendasikan untuk menggunakan Black untuk memformat kode Anda sebelum mengirimkan PR yang diinstal secara otomatis pada langkah 6.
Kemudian, setelah Anda berkomitmen memastikan bahwa kait git diaktifkan (Pycharm misalnya memiliki opsi untuk menghilangkannya). Ini dapat dilakukan dengan menggunakan pra-komit, yang diinstal secara otomatis pada langkah 6, sebagai berikut:
pre-commit installIni akan berjalan hitam secara otomatis ketika Anda berkomitmen pada semua file yang Anda modifikasi, gagal jika ada file yang perlu dihitamkan. Jika Black tidak menjalankan Execute yang berikut:
black {source_file_or_directory}Kembangkan fitur di cabang fitur Anda di komputer Anda, menggunakan Git untuk melakukan kontrol versi. Setelah selesai mengedit, tambahkan file yang diubah menggunakan git add dan kemudian git komit:
git add modified_files
git commit -m " my first hyperopt commit " Tes untuk proyek ini menggunakan Pytest dan dapat dijalankan dengan menelepon pytest .
Catat perubahan Anda di git, lalu dorong perubahan ke akun GitHub Anda dengan:
git push -u origin my_featurePerhatikan bahwa dependensi Dev membutuhkan Python 3.6+.
Saat ini tiga algoritma diimplementasikan di Hyperopt:
Hyperopt telah dirancang untuk mengakomodasi algoritma optimasi Bayesian berdasarkan proses Gaussian dan pohon regresi, tetapi ini saat ini tidak diimplementasikan.
Semua algoritma dapat diparalelkan dalam dua cara, menggunakan:
Dokumentasi hyperopt dapat ditemukan di sini, tetapi sebagian masih diselenggarakan di wiki. Berikut adalah beberapa tautan cepat ke halaman yang paling relevan:
Lihat proyek menggunakan hyperopt di wiki.
Pengumuman
Diskusi
Jika Anda menggunakan perangkat lunak ini untuk penelitian, silakan mengutip kertas (http://proedings.mlr.press/v28/bergstra13.pdf) sebagai berikut:
Bergstra, J., Yamins, D., Cox, DD (2013) Membuat Ilmu Pencarian Model: Optimalisasi Hyperparameter dalam Ratusan Dimensi untuk Arsitektur Visi. Tproc. dari Konferensi Internasional ke-30 tentang Pembelajaran Mesin (ICML 2013), Juni 2013, hlm. I-115 hingga I-23.
Proyek ini telah menerima dukungan dari