An open source python library for scalable Bayesian optimisation.
Dragonfly是一个用于可扩展贝叶斯优化的开源python库。
项目地址:(点击本链接可直接访问)
https://github.com/dragonfly/dragonfly/
(致谢:感谢读者@朱小鹏 提供的工具 GitHub Trending Hub,现在可以直接在微信打开Github链接啦)
贝叶斯优化是用来优化黑盒函数,其计算通常是非常昂贵的。除了普通的优化技术,Dragonfly还提供了一系列工具来将贝叶斯优化扩展到昂贵的大规模问题。这些特性/功能特别适合于高维优化(针对大量变量进行优化)、同步或异步设置中的并行计算(并行执行多个计算)、多保真度优化(使用廉价的近似来加速优化过程)和多目标优化(同时优化多个函数)。
Dragonfly与Python 2(>= 2.7)和Python 3(>= 3.5)兼容,并已在Linux,macOS和Windows平台上进行测试。
如想查看文档、安装和使用教程,请查看readthedocs页面。查看论文可获取更多详细内容。
有关安装Dragonfly及其依赖项的详细说明,请点击此处查看。
快速安装:如果曾经使用过Dragonfly,你可以通过 pip 进行安装
sudo apt-get install python-dev python3-dev gfortran # On Ubuntu/Debian
pip install numpy
pip install dragonfly-opt -v
测试安装:你可以在python中导入Dragonfly以测试它是否已经正确安装。如果已经通过源代码进行安装,请确保已将其移动到其他目录以避免命名冲突。
$ python
> from dragonfly import minimise_function
# The first argument below is the function, the second is the domain, and the third is the budget. >
x: x ** 4 - x**2 + 0.1 * x, [[-10, 10]], 10); > min_val, min_pt, history = minimise_function(lambda
...
> min_val, min_pt
(-0.32122746026750953, array([-0.7129672]))
由于算法的随机性,上述 min_val、min_pt 的值可能会有所不同。如果你运行它的时间更长(例如:min_val, min_pt, history = minimise_function(lambda x: x ** 4 - x**2 + 0.1 * x, [[-10, 10]], 100) ),你应该能得到更一致的最小值。
如果安装失败或有警告消息,请点击此处查看详细说明。
Dragonfly可以通过调用 dragonfly-script.py 直接在命令行中使用,或者通过主库中的 maximise_function 函数以python代码导入。为了帮助你快速入门,我们在示例目录中提供了一些示例。有关示例和用例,请查看我们的readthedocs入门页面(命令行,Python)。
命令行:以下是在命令行中的示例用法
cd examples
dragonfly-script.py --config synthetic/branin/config.json --options options_files/options_example.txt
Python模式:Dragonfly的主要API在 dragonfly/apis 中定义。有关它们的定义和参数,请查看 dragonfly/apis/opt.py 和 dragonfly/apis/moo.py 。你可以通过python代码导入主API,如下:
from dragonfly import minimise_function, maximise_function
func = lambda x: x ** 4 - x**2 + 0.1 * x
domain = [[-10, 10]]
max_capital = 100min_val, min_pt, history = minimise_function(func, domain, max_capital)
print(min_val, min_pt)
max_val, max_pt, history = maximise_function(lambda x: -func(x), domain, max_capital)
print(max_val, max_pt)
上述代码中,func是要最大化的函数,domain是要优化func的域,max_capital是可用于优化的资本。有关更多详细示例,请查看 examples/synthetic/branin/in_code_demo.py 和 examples/supernova/in_code_demo.py 。
有关用例的综合列表,包括多目标优化,多保真优化,神经架构搜索和其他优化方法(除了贝叶斯优化),请查看我们的readthe文档页面(命令行,Python)。
Kirthevasan Kandasamy: github, webpage
Karun Raju Vysyaraju: github, linkedin
Willie Neiswanger: github, webpage
Biswajit Paria: github, webpage
Chris Collins: github, webpage
如果在你的研究中使用了本项目的代码,请引用这份手稿:
title={Tuning Hyperparameters without Grad Students: Scalable and Robust Bayesian
Optimisation with Dragonfly},
author={Kandasamy, Kirthevasan and Vysyaraju, Karun Raju and Neiswanger,
Willie and Paria, Biswajit and Collins, Christopher R. and Schneider, Jeff and
Poczos, Barnabas and Xing, Eric P},
journal={arXiv preprint arXiv:1903.06694},
year={2019}
}
该软件根据MIT许可证发布。 有关详细信息,请查看 LICENSE.txt。
如有疑问,请发送电子邮件至kandasamy@cs.cmu.edu进行咨询。
“版权所有2018-2019 Kirthevasan Kandasamy”
AI求职百题斩 · 每日一题
点击阅读原文,查看划线部分链接内容