前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Github项目推荐 | Dragonfly:可扩展贝叶斯优化库(Python)

Github项目推荐 | Dragonfly:可扩展贝叶斯优化库(Python)

作者头像
AI研习社
发布2019-05-08 17:27:47
1.9K0
发布2019-05-08 17:27:47
举报
文章被收录于专栏:AI研习社

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 进行安装

代码语言:javascript
复制
$ sudo apt-get install python-dev python3-dev gfortran # On Ubuntu/Debian$ pip install numpy$ pip install dragonfly-opt -v

测试安装:你可以在python中导入Dragonfly以测试它是否已经正确安装。如果已经通过源代码进行安装,请确保已将其移动到其他目录以避免命名冲突。

代码语言:javascript
复制
$ python>>> from dragonfly import minimise_function>>> # The first argument below is the function, the second is the domain, and the third is the budget.>>> min_val, min_pt, history = minimise_function(lambda x: x ** 4 - x**2 + 0.1 * x, [[-10, 10]], 10);  ...>>> 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)。

命令行:以下是在命令行中的示例用法

代码语言:javascript
复制
$ cd examples$ dragonfly-script.py --config synthetic/branin/config.json --options options_files/options_example.txt

Python模式:Dragonfly的主要API在 dragonfly/apis 中定义。有关它们的定义和参数,请查看 dragonfly/apis/opt.pydragonfly/apis/moo.py 。你可以通过python代码导入主API,如下:

代码语言:javascript
复制
from dragonfly import minimise_function, maximise_functionfunc = lambda x: x ** 4 - x**2 + 0.1 * xdomain = [[-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

引用

如果在你的研究中使用了本项目的代码,请引用这份手稿

代码语言:javascript
复制
@article{kandasamy2019tuning,    title={Tuning Hyperparameters without Grad Students: Scalable and Robust BayesianOptimisation 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}  }

License

该软件根据MIT许可证发布。 有关详细信息,请查看 LICENSE.txt

如有疑问,请发送电子邮件至kandasamy@cs.cmu.edu进行咨询。

“版权所有2018-2019 Kirthevasan Kandasamy”

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI研习社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
  • 快速开始
    • 贡献者
      • 引用
        • License
        相关产品与服务
        GPU 云服务器
        GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于生成式AI,自动驾驶,深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档