Skip to main content

PyGlove:一个用于操作 Python 对象的库。

项目描述

标识 标识

PyGlove:操作 Python 程序

PyPI 版本 编解码器 pytest

PyGlove 是一个用于 Python 对象操作的通用库。它将符号面向对象编程引入 Python,允许直接操作对象,使元程序更容易编写。它已被用于处理复杂的机器学习场景,例如 AutoML,以及以额外的灵活性促进日常编程任务。

PyGlove 是轻量级的,除了 Python 解释器之外没有依赖项。它提供:

  • Python 的可变符号对象模型;
  • 丰富的 Python 对象操作操作集;
  • 自动搜索更好的 Python 程序的解决方案,包括:
    • 一个易于使用的 API,用于将搜索放入任意预先存在的 Python 程序;
    • 一组用于定义搜索空间的强大搜索原语;
    • 一个可供使用的搜索算法库,以及一个用于开发新搜索算法的框架;
    • 与任何分布式基础设施进行交互以进行此类搜索的 API。

它常用于:

  • 自动化机器学习(AutoML);
  • 进化计算;
  • 大型团队的机器学习(发展和共享 ML 代码、重用 ML 技术等);
  • Python 中的日常编程任务(高级绑定功能、可变性等)。

PyGlove 已在 NeurIPS 2020 上发布。它在Alphabet 内被广泛使用,包括 Google Research、Google Cloud、Youtube 和 Waymo。

PyGlove 由Google Brain Team的 Daiyi Peng 及其同事开发。

安装

pip install pyglove

你好 PyGlove

import pyglove as pg

@pg.symbolize
class Hello:
  def __init__(self, subject):
    self._greeting = f'Hello, {subject}!'

  def greet(self):
    print(self._greeting)


hello = Hello('World')
hello.greet()

你好世界!

hello.rebind(subject='PyGlove')
hello.greet()

你好,派格洛夫!

hello.rebind(subject=pg.oneof(['World', 'PyGlove']))
for h in pg.iter(hello):
  h.greet()

你好世界!
你好,派格洛夫!

例子

引用 PyGlove

@inproceedings{peng2020pyglove,
  title={PyGlove: Symbolic programming for automated machine learning},
  author={Peng, Daiyi and Dong, Xuanyi and Real, Esteban and Tan, Mingxing and Lu, Yifeng and Bender, Gabriel and Liu, Hanxiao and Kraft, Adam and Liang, Chen and Le, Quoc},
  booktitle={Advances in Neural Information Processing Systems (NeurIPS)},
  volume={33},
  pages={96--108},
  year={2020}
}

免责声明:这不是官方支持的 Google 产品。

项目详情


发布历史 发布通知| RSS订阅

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

pyglove-0.1.0.tar.gz (315.2 kB 查看哈希)

已上传 source

内置分布

pyglove-0.1.0-py3-none-any.whl (343.0 kB 查看哈希

已上传 py3