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或with conda:
$ conda create -n my_env python=3
激活環境:
$ source my_env/bin/activate
或與Conda:
$ conda activate my_env
$ 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之前使用Black格式化代碼。
然後,一旦提交確保激活git鉤(例如,Pycharm可以選擇省略它們)。這可以使用預先建築物(在步驟6中自動安裝)進行,如下所示:
pre-commit install當您在修改的所有文件上提交所有文件時,這將自動運行黑色,如果有任何文件要變黑,則會失敗。如果Black不運行以下執行以下操作:
black {source_file_or_directory}使用git在計算機上的功能分支上開發功能,並使用git進行版本控件。編輯完成後,使用git add添加更改的文件,然後添加git commit:
git add modified_files
git commit -m " my first hyperopt commit "該項目的測試使用pytest,可以通過調用pytest來運行。
記錄您的git的更改,然後將更改推向您的github帳戶:
git push -u origin my_feature請注意,開發依賴項需要python 3.6+。
目前,在HyperOPT中實現了三種算法:
HyperOPT旨在根據高斯工藝和回歸樹來容納貝葉斯優化算法,但目前尚未實施。
所有算法都可以通過兩種方式並行,使用:
HyperOPT文檔可以在此處找到,但仍部分託管在Wiki上。以下是一些最相關頁面的快速鏈接:
請參閱Wiki上使用HyperOPT的項目。
公告
討論
如果您使用此軟件進行研究,請引用論文(http://proceedings.mlr.press/v28/bergstra13.pdf),如下所示:
Bergstra,J.,Yamins,D.,Cox,DD(2013)進行模型搜索科學:在數百個方面的視覺體系結構中的超參數優化。 Tproc。第30屆機器學習國際會議(ICML 2013),2013年6月,第I-115至I-23。
該項目已得到來自