Hyperopt ist eine Python-Bibliothek für serielle und parallele Optimierung über unangenehme Suchräume, die reale, diskrete und bedingte Dimensionen umfassen können.
Installieren Sie Hyperopt von PYPI
pip install hyperoptum Ihr erstes Beispiel auszuführen
# 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} Wenn Sie Entwickler sind und einen Beitrag leisten möchten, befolgen Sie diese Schritte bitte.
Erstellen Sie ein Konto auf GitHub, wenn Sie noch keines haben.
Fork das Projektrepository: Klicken Sie auf die Schaltfläche "Fork" oben oben auf der Seite. Dadurch wird eine Kopie des Code unter Ihrem Konto auf dem GitHub -Benutzerkonto erstellt. Weitere Informationen zum Forking eines Repositorys finden Sie in diesem Handbuch.
Klonen Sie Ihre Gabel des Hyperopt -Repo aus Ihrem Github -Konto auf Ihre lokale Festplatte:
git clone https://github.com/ < github username > /hyperopt.git
cd hyperopt Umgebung schaffen mit:
$ python3 -m venv my_env oder $ python -m venv my_env oder mit conda:
$ conda create -n my_env python=3
Aktivieren Sie die Umgebung:
$ source my_env/bin/activate
oder mit Conda:
$ conda activate my_env
Installieren Sie Abhängigkeiten für Extras (Sie benötigen diese, um PyTest auszuführen): Linux/Unix: $ pip install -e '.[MongoTrials, SparkTrials, ATPE, dev]'
oder Fenster:
pip install -e .[MongoTrials]
pip install -e .[SparkTrials]
pip install -e .[ATPE]
pip install -e .[dev]Fügen Sie die stromaufwärts gelegene Fernbedienung hinzu. Dies spart einen Verweis auf das Haupt -Hyperopt -Repository, mit dem Sie Ihr Repository mit den neuesten Änderungen synchronisiert halten können:
$ git remote add upstream https://github.com/hyperopt/hyperopt.git
Sie sollten jetzt eine funktionierende Installation von Hyperopt und Ihr Git -Repository ordnungsgemäß konfiguriert haben. In den nächsten Schritten werden nun der Prozess des Änderns des Codes und der Übermittlung eines PR beschrieben:
Synchronisieren Sie Ihren Master -Zweig mit dem vorgelagerten Master -Zweig:
git checkout master
git pull upstream masterErstellen Sie eine Feature -Zweigstelle, um Ihre Entwicklungsänderungen zu veranstalten:
$ git checkout -b my_feature
und fangen Sie an, Änderungen vorzunehmen. Verwenden Sie immer einen Feature -Zweig. Es ist eine gute Praxis, niemals an der Meisterzweig zu arbeiten!
Wir empfehlen, Schwarz zu verwenden, um Ihren Code zu formatieren, bevor Sie eine PR senden, die automatisch in Schritt 6 installiert ist.
Sobald Sie sich verpflichten, stellen Sie sicher, dass Git -Hooks aktiviert werden (Pycharm hat beispielsweise die Möglichkeit, sie wegzulassen). Dies kann mit dem vorhandenen Pre-Commit, der in Schritt 6 automatisch installiert ist, wie folgt erfolgen:
pre-commit installDadurch wird schwarz automatisch ausgeführt, wenn Sie sich für alle von Ihnen geänderten Dateien einsetzen, und fehlschlägt, wenn Dateien erforderlich sind, die schwarz sind. Falls Black nicht ausgeführt wird, führen Sie Folgendes aus:
black {source_file_or_directory}Entwickeln Sie die Funktion in Ihrem Feature -Zweig auf Ihrem Computer und verwenden Sie GIT, um die Versionskontrolle durchzuführen. Wenn Sie bearbeiten, fügen Sie geänderte Dateien mit Git Add und dann Git Commit hinzu:
git add modified_files
git commit -m " my first hyperopt commit " Die Tests für dieses Projekt verwenden PyTest und können durch pytest ausgeführt werden.
Notieren Sie Ihre Änderungen in Git und drücken Sie die Änderungen in Ihr Github -Konto mit:
git push -u origin my_featureBeachten Sie, dass Dev -Abhängigkeiten Python 3.6+ erfordern.
Derzeit werden drei Algorithmen in Hyperopt implementiert:
Hyperopt wurde entwickelt, um Bayesian -Optimierungsalgorithmen auf der Grundlage von Gaußschen Prozessen und Regressionsbäumen aufzunehmen. Diese werden jedoch derzeit nicht implementiert.
Alle Algorithmen können auf zwei Arten parallelisiert werden, wobei:
Hyperopt -Dokumentation finden Sie hier, wird jedoch teilweise noch im Wiki gehostet. Hier sind einige kurze Links zu den relevantesten Seiten:
Siehe Projekte mit Hyperopt am Wiki.
Ankündigungen
Diskussion
Wenn Sie diese Software für die Forschung verwenden, zitieren Sie bitte das Papier (http://proceedings.mlr.press/v28/bergstra13.pdf) wie folgt:
Bergstra, J., Yamins, D., Cox, DD (2013) Erstellen einer Wissenschaft der Modellsuche: Hyperparameteroptimierung in Hunderten von Dimensionen für Vision -Architekturen. TPROC. der 30. Internationalen Konferenz über maschinelles Lernen (ICML 2013), Juni 2013, S. I-115 bis I-23.
Dieses Projekt hat Unterstützung von erhalten