清华大学发布珠算:一个用于生成模型的Python库

简介:

5 月 27-28 日,机器之心主办的第一届全球机器智能峰会(GMIS 2017)将在北京 898 创新空间举行。在峰会第一天下午的「机器学习」主题 Session 上,清华大学副教授朱军将分享解读《珠算:贝叶斯深度学习的 GPU 库(ZhuSuan: a GPU Library for Bayesian Deep Learning)》。近日,清华大学机器学习组已经在 GitHub 上发布了「珠算(ZhuSuan)」这一软件库。机器之心在本文中编译介绍了该项目的介绍文档,如果你想现场聆听对该项目的更详细深入的介绍,可访问 GMIS 官网 gmis.jiqizhixin.com 了解参会方式或点击这里直达购票地址

珠算(ZhuSuan)是一个构建于 TensorFlow 之上的用于生成模型(Generative Model)的 Python 库。和现有的主要为有监督学习任务设计的深度学习库不同,珠算的主要特点是其在很大程度上植根于贝叶斯推理(Bayesian Inference),因此,珠算能支持各种生成模型:既包括传统的分层贝叶斯模型(如话题模型、贝叶斯逻辑回归等),也有最近的深度生成模型(如VAE、GAN等等)。

使用珠算,用户可以享有深度学习的强大拟合能力和多 GPU支持的高效训练,同时,还能通过生成模型对复杂环境进行建模,充分利用无标注数据,并通过严谨的贝叶斯推理处理不确定性。

目前支持的主要推理算法

变分推理和随机变分推理(VI & SVI)

支持多种变分后验:

  • 平均场后验(Mean-field posterior):各因子完全独立的后验

  • 结构化的后验(Structured posterior):隐变量间具有用户指定的依赖关系

支持的变分方法:

  • SGVB:随机梯度变分贝叶斯(Stochastic gradient variational Bayes)

  • IWAE:重要程度加权的目标(Importance weighted objectives)

  • NVIL:具有方差减缩的得分函数估计器(Score function estimator with variance reduction)

  • VIMCO:具有方差减缩的多样本得分函数估计器(Multi-sample score function estimator with variance reduction)

自适应重要程度采样

  • 重新加权的唤醒-睡眠(RWS:Reweighted Wake-sleep):带有用户指定的自适应提议分布

马尔可夫链蒙特卡洛(MCMC)

  • 哈密尔顿蒙特卡洛(HMC):自适应调整步长和质量(mass)

安装

珠算仍处在开发阶段。在第一个稳定版(1.0)发布之前,请从github克隆(clone)这个库并在主目录中运行以下代码:

1
pip install .

这会自动安装珠算及其依赖包。

文档

在线文档地址:http://zhusuan.readthedocs.io/

其中包含三个使用教程(Tutorials)和代码的API文档:

  • 变分自编码器的分步实现

  • ZhuSuan中的基本概念

  • 用于多元回归问题的贝叶斯神经网络

示例

如果你想运行我们提供的示例,你需要安装额外的依赖包。可以通过执行以下代码完成:

1
pip install  ".[examples]"
  • 高斯(Gaussian):HMC

  • Toy 2D Intractable Posterior: SGVB

  • 贝叶斯神经网络:SGVB

  • 变分自编码器(VAE):SGVB、IWAE

  • 卷积 VAE:SGVB

  • 半监督 VAE (Kingma, 2014):SGVB、RWS

  • 深度 Sigmoid 信念网络:RWS、VIMCO

  • Logistic Normal 主题模型:HMC

开发

如果要以「可编辑」或「开发」模式安装珠算,在主目录下运行:

1
pip install  - e .

如果要移除安装,运行:

1
pip uninstall zhusuan

附加的开发用依赖包可通过以下代码安装:

1
pip install  ".[dev]"

1.测试

以下命令可在主目录中运行自动测试:

1
python  - m unittest discover  - v

测试范围:在运行测试之后,为了确保测试范围涵盖开发,请运行

1
coverage report  - - include = "zhusuan/*"

PEP8 代码风格检查:我们遵循 PEP8 Python 代码风格。要进行检查,在主目录中运行

1
pep8 .

2.文档

文档在 docs/ 目录下,是 RestructuredText(.rst)文件。主页为 index.rst。关于 RestructuredText 的教程可参阅:https://pythonhosted.org/an_example_pypi_project/sphinx.html 

API References 是通过 Sphinx 自动生成的。它们在 doc/api/ 目录下,在每次修改代码之后都应该重新生成:

1
make api

在 docs/ 目录下运行以下代码可将文档编译成网页:

1
make html

生成的网页存储在 docs/_build 目录,可以通过浏览器查看。



本文转自 stock0991 51CTO博客,原文链接:http://blog.51cto.com/qing0991/1931713

相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
相关文章
|
12天前
|
存储 缓存 JavaScript
python实战篇:利用request库打造自己的翻译接口
python实战篇:利用request库打造自己的翻译接口
26 1
python实战篇:利用request库打造自己的翻译接口
|
23天前
|
Web App开发 Python
在ModelScope中,你可以使用Python的浏览器自动化库
在ModelScope中,你可以使用Python的浏览器自动化库
15 2
|
28天前
|
数据格式 Python
如何使用Python的Pandas库进行数据透视图(melt/cast)操作?
Pandas的`melt()`和`pivot()`函数用于数据透视。基本步骤:导入pandas,创建DataFrame,然后使用这两个函数转换数据格式。示例代码展示了如何通过`melt()`转为长格式,再用`pivot()`恢复为宽格式。输入数据是包含'Name'和'Age'列的DataFrame,最终结果经过转换后呈现出不同的布局。
39 6
|
28天前
|
数据挖掘 数据处理 索引
如何使用Python的Pandas库进行数据筛选和过滤?
Pandas是Python数据分析的核心库,其DataFrame数据结构便于数据操作。筛选与过滤数据主要包括:导入pandas,创建DataFrame,通过布尔索引、`query()`或`loc[]`、`iloc[]`方法筛选。
|
29天前
|
数据处理 Python
如何使用Python的Pandas库进行数据排序和排名?
Pandas在Python中提供数据排序和排名功能。使用`sort_values()`进行排序,如`df.sort_values(by='A', ascending=False)`进行降序排序;用`rank()`进行排名,如`df['A'].rank(ascending=False)`进行降序排名。多列操作可传入列名列表,如`df.sort_values(by=['A', 'B'], ascending=[True, False])`。
22 6
|
29天前
|
机器学习/深度学习 存储 算法
Python中的NumPy库:数值计算与科学计算的基石
【2月更文挑战第29天】NumPy是Python科学计算的核心库,专注于高效处理大型多维数组和矩阵。其核心是ndarray对象,提供快速数组操作和数学运算,支持线性代数、随机数生成等功能。NumPy广泛应用于数据处理、科学计算和机器学习,简化了矩阵运算、统计分析和算法实现,是数据科学和AI领域的重要工具。
|
29天前
|
机器学习/深度学习 算法 Python
请解释Python中的支持向量机(SVM)以及如何使用Sklearn库实现它。
使用Python Scikit-learn实现支持向量机(SVM)涉及数据准备、选择模型(线性或非线性,搭配合适核函数)、训练、模型评估、参数调整和预测新数据。SVM通过最大化边界(margin)找到最优超平面,适用于分类和回归分析。
20 0
|
28天前
|
机器学习/深度学习 算法 数据挖掘
请解释Python中的决策树算法以及如何使用Sklearn库实现它。
决策树是监督学习算法,常用于分类和回归问题。Python的Sklearn库提供了决策树实现。以下是一步步创建决策树模型的简要步骤:导入所需库,加载数据集(如鸢尾花数据集),划分数据集为训练集和测试集,创建`DecisionTreeClassifier`,训练模型,预测测试集结果,最后通过`accuracy_score`评估模型性能。示例代码展示了这一过程。
|
28天前
|
JSON C语言 C++
【Python 基础教程 26】Python3标准库全面入门教程:一步步带你深入理解与应用
【Python 基础教程 26】Python3标准库全面入门教程:一步步带你深入理解与应用
60 1
|
15天前
|
Python
使用Python实现基本的线性回归模型
使用Python实现基本的线性回归模型
31 8
使用Python实现基本的线性回归模型

热门文章

最新文章