Hyperoptは、厄介な検索スペースを介したシリアルおよび並列の最適化のためのPythonライブラリであり、実数、個別、条件付きの次元が含まれる場合があります。
PypiからHyperoptをインストールします
pip install hyperopt最初の例を実行します
# 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} あなたが開発者であり、貢献したい場合は、これらの手順に従ってください。
まだ持っていない場合は、GitHubでアカウントを作成します。
プロジェクトリポジトリのフォーク:ページの上部近くの「フォーク」ボタンをクリックします。これにより、GitHubユーザーアカウントにアカウントの下にコードのコピーが作成されます。リポジトリをフォークする方法の詳細については、このガイドを参照してください。
GitHubアカウントから地元のディスクにHyperoPTリポジトリのフォークをクローンします。
git clone https://github.com/ < github username > /hyperopt.git
cd hyperopt環境を作成する:
$ python3 -m venv my_envまたは$ python -m venv my_envまたはconda:
$ conda create -n my_env python=3
環境を有効にします:
$ source my_env/bin/activate
またはコンドラと:
$ conda activate my_env
エキストラの依存関係をインストールします(pytestを実行するにはこれらが必要です):linux/unix: $ pip install -e '.[MongoTrials, SparkTrials, ATPE, dev]'
またはWindows:
pip install -e .[MongoTrials]
pip install -e .[SparkTrials]
pip install -e .[ATPE]
pip install -e .[dev]上流のリモコンを追加します。これにより、メインのHyperOPTリポジトリへの参照が保存されます。これは、リポジトリを最新の変更と同期させるために使用できます。
$ git remote add upstream https://github.com/hyperopt/hyperopt.git
これで、HyperOPTの動作インストールが必要になり、GITリポジトリが適切に構成されています。次のステップでは、コードを変更してPRを送信するプロセスについて説明します。
マスターブランチを上流のマスターブランチと同期します。
git checkout master
git pull upstream master開発の変更を保持する機能ブランチを作成します。
$ git checkout -b my_feature
変更を開始します。常に機能ブランチを使用してください。マスターブランチで作業しないことをお勧めします!
ステップ6に自動的にインストールされているPRを送信する前に、ブラックを使用してコードをフォーマットすることをお勧めします。
次に、コミットしたら、Gitフックがアクティブ化されることを確認します(たとえば、Pycharmには省略するオプションがあります)。これは、次のようにステップ6に自動的にインストールされる前コミットを使用して実行できます。
pre-commit installこれにより、変更したすべてのファイルでコミットすると自動的にブラックが実行され、黒くする必要があるファイルがある場合に失敗します。 Blackが実行されない場合に備えて、以下を実行します。
black {source_file_or_directory}Gitを使用してバージョンコントロールを実行するために、コンピューターの機能ブランチの機能を開発します。編集が完了したら、git addを使用して変更されたファイルを追加してからgitcomped:
git add modified_files
git commit -m " my first hyperopt commit "このプロジェクトのテストはpytestを使用し、 pytestを呼び出すことで実行できます。
gitの変更を記録してから、次のようにGitHubアカウントに変更をプッシュします。
git push -u origin my_feature開発者依存関係にはPython 3.6+が必要であることに注意してください。
現在、3つのアルゴリズムがHyperoPTに実装されています。
HyperoPTは、ガウスプロセスと回帰ツリーに基づいてベイジアン最適化アルゴリズムに対応するように設計されていますが、これらは現在実装されていません。
すべてのアルゴリズムは、次の2つの方法で並列化できます。
HyperOPTドキュメントはここにありますが、一部はまだWikiでホストされています。最も関連性の高いページへのクイックリンクは次のとおりです。
WikiでHyperoptを使用したプロジェクトを参照してください。
発表
議論
このソフトウェアを調査に使用する場合は、次のように、論文(http://proceedings.mlr.press/v28/bergstra13.pdf)を引用してください。
Bergstra、J.、Yamins、D.、Cox、DD(2013)モデル検索の科学の作成:ビジョンアーキテクチャの数百の次元でのハイパーパラメーターの最適化。 tproc。第30回機械学習に関する国際会議(ICML 2013)、2013年6月、pp。I-115からI-23。
このプロジェクトはからのサポートを受けています