Hyperopt เป็นไลบรารี Python สำหรับการเพิ่มประสิทธิภาพแบบอนุกรมและแบบขนานเหนือพื้นที่การค้นหาที่น่าอึดอัดใจซึ่งอาจรวมถึงมิติที่มีมูลค่าจริงไม่ต่อเนื่องและมีเงื่อนไข
ติดตั้ง Hyperopt จาก PYPI
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 สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับวิธีการแยกที่เก็บดูคู่มือนี้
โคลนส้อม repo hyperopt ของคุณจากบัญชี GitHub ของคุณไปยังดิสก์ในพื้นที่ของคุณ:
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:
$ 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]เพิ่มรีโมทต้นน้ำ สิ่งนี้จะบันทึกการอ้างอิงไปยังที่เก็บไฮเปอร์โฟนหลักซึ่งคุณสามารถใช้เพื่อให้ที่เก็บของคุณซิงโครไนซ์กับการเปลี่ยนแปลงล่าสุด:
$ 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
และเริ่มทำการเปลี่ยนแปลง ใช้สาขาคุณสมบัติเสมอ เป็นวิธีปฏิบัติที่ดีที่จะไม่ทำงานกับสาขาหลัก!
เราขอแนะนำให้ใช้ Black เพื่อจัดรูปแบบรหัสของคุณก่อนที่จะส่ง PR ซึ่งติดตั้งโดยอัตโนมัติในขั้นตอนที่ 6
จากนั้นเมื่อคุณกระทำให้แน่ใจว่าเปิดใช้งานตะขอ Git (ตัวอย่างเช่น Pycharm มีตัวเลือกที่จะละเว้น) สามารถทำได้โดยใช้ pre-commit ซึ่งติดตั้งโดยอัตโนมัติในขั้นตอนที่ 6 ดังนี้:
pre-commit installสิ่งนี้จะเรียกใช้สีดำโดยอัตโนมัติเมื่อคุณกระทำในไฟล์ทั้งหมดที่คุณแก้ไขโดยล้มเหลวหากมีไฟล์ใด ๆ ที่ต้องถูกแบล็ก ในกรณีที่สีดำไม่ทำงานดำเนินการดังต่อไปนี้:
black {source_file_or_directory}พัฒนาคุณสมบัติในสาขาคุณสมบัติของคุณบนคอมพิวเตอร์ของคุณโดยใช้ 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โปรดทราบว่าการพึ่งพา dev ต้องการ Python 3.6+
ปัจจุบันมีการใช้อัลกอริทึมสามแบบใน HyperOpt:
Hyperopt ได้รับการออกแบบมาเพื่อรองรับอัลกอริทึมการเพิ่มประสิทธิภาพแบบเบย์ตามกระบวนการเกาส์และต้นไม้ถดถอย แต่สิ่งเหล่านี้ยังไม่ได้ใช้งานอยู่ในปัจจุบัน
อัลกอริทึมทั้งหมดสามารถขนานได้สองวิธีโดยใช้:
เอกสาร Hyperopt สามารถพบได้ที่นี่ แต่บางส่วนยังคงเป็นเจ้าภาพบนวิกิ นี่คือลิงค์ด่วนไปยังหน้าเว็บที่เกี่ยวข้องมากที่สุด:
ดูโครงการโดยใช้ Hyperopt บนวิกิ
การประกาศ
การอภิปราย
หากคุณใช้ซอฟต์แวร์นี้เพื่อการวิจัยโปรดอ้างอิงกระดาษ (http://proceedings.mlr.press/v28/bergstra13.pdf) ดังนี้:
Bergstra, J. , Yamins, D. , Cox, DD (2013) สร้างวิทยาศาสตร์ของการค้นหาแบบจำลอง: การเพิ่มประสิทธิภาพ hyperparameter ในหลายร้อยมิติสำหรับสถาปัตยกรรมการมองเห็น tproc จากการประชุมนานาชาติครั้งที่ 30 เกี่ยวกับการเรียนรู้ของเครื่อง (ICML 2013), มิถุนายน 2013, pp. I-115 ถึง I-23
โครงการนี้ได้รับการสนับสนุนจาก