跳转到主要内容

TensorFlow中的概率建模和统计推断

项目描述

TensorFlow Probability

TensorFlow Probability 是 TensorFlow 中用于概率推理和统计分析的库。作为 TensorFlow 生态系统的一部分,TensorFlow Probability 提供了概率方法与深度网络的集成、基于自动微分的梯度推断,以及通过硬件加速(例如,GPU)和分布式计算扩展到大型数据集和模型的能力。

TFP 还在纯 JAX 中作为 "Tensor-friendly Probability" 工作!from tensorflow_probability.substrates import jax as tfp -- 了解更多 这里

我们的概率机器学习工具结构如下。

层 0:TensorFlow。 数值运算。特别是,LinearOperator 类允许利用特殊结构(对角、低秩等)的零矩阵实现,以进行高效计算。它由 TensorFlow Probability 团队构建和维护,现在已成为核心 TF 中的 tf.linalg 的一部分。

层 1:统计构建块

  • 分布(《tfp.distributions》):一个包含大量概率分布和相关统计的集合,具有批量和 广播 语义。请参阅《分布教程》 这里
  • 逆算子(《tfp.bijectors》):随机变量的可逆和可组合变换。逆算子提供了一类丰富的变换分布,从经典例子如对数正态分布到复杂的深度学习模型,例如《masked autoregressive flows》。

层 2:模型构建

  • 联合分布(《tfp.distributions.JointDistributionSequential》):一个或多个可能相互依赖的分布上的联合分布。有关使用 TFP 的 JointDistribution 进行建模的介绍,请查看此 colab
  • 概率层(《tfp.layers》):具有代表函数不确定性的神经网络层,扩展 TensorFlow Layers。

层 3:概率推断

  • 马尔可夫链蒙特卡罗(《tfp.mcmc》):通过采样近似积分的算法。包括《Hamiltonian Monte Carlo》、《随机游走 Metropolis-Hastings》和构建自定义转换核的能力。
  • 变分推断(《tfp.vi》):通过优化近似积分的算法。
  • 优化器(《tfp.optimizer》):扩展 TensorFlow Optimizers 的随机优化方法。包括《Stochastic Gradient Langevin Dynamics》。
  • 蒙特卡洛(《tfp.monte_carlo》):计算蒙特卡洛期望的工具。

TensorFlow Probability 正在积极开发中。接口可能会随时更改。

示例

请参阅 tensorflow_probability/examples/ 中的端到端示例。它包括教程笔记本,例如

它还包括以下示例脚本

使用潜在代码和变分推理进行表示学习。

安装

有关安装TensorFlow的详细信息、安装依赖项的指南以及(可选)设置虚拟环境,请参阅TensorFlow安装指南

稳定构建

要安装最新稳定版本,请运行以下命令

# Notes:

# - The `--upgrade` flag ensures you'll get the latest version.
# - The `--user` flag ensures the packages are installed to your user directory
#   rather than the system directory.
# - TensorFlow 2 packages require a pip >= 19.0
python -m pip install --upgrade --user pip
python -m pip install --upgrade --user tensorflow tensorflow_probability

对于仅CPU使用(和更小的安装),使用tensorflow-cpu安装。

要使用TensorFlow 2.0之前的版本,请运行

python -m pip install --upgrade --user "tensorflow<2" "tensorflow_probability<0.9"

注意:由于TensorFlow不是TensorFlow Probability包(在setup.py中)的依赖项,您必须显式安装TensorFlow包(tensorflowtensorflow-cpu)。这使得我们可以维护一个包,而不是为CPU和GPU启用的TensorFlow维护单独的包。有关TensorFlow和TensorFlow Probability之间的依赖项的更多详细信息,请参阅TFP发行说明

夜间构建

在pip包tfp-nightly下还有TensorFlow Probability的夜间构建版本,它依赖于tf-nightlytf-nightly-cpu之一。夜间构建包括新功能,但可能不如版本发布稳定。稳定和夜间文档都可在此处找到。

python -m pip install --upgrade --user tf-nightly tfp-nightly

从源代码安装

您还可以从源代码安装。这需要Bazel构建系统。在尝试从源代码构建TensorFlow Probability之前,强烈建议您安装TensorFlow的夜间构建(tf-nightly)。TFP目前支持的Bazel最新版本是6.4.0;对7.0.0+的支持是WIP。

# sudo apt-get install bazel git python-pip  # Ubuntu; others, see above links.
python -m pip install --upgrade --user tf-nightly
git clone https://github.com/tensorflow/probability.git
cd probability
bazel build --copt=-O3 --copt=-march=native :pip_pkg
PKGDIR=$(mktemp -d)
./bazel-bin/pip_pkg $PKGDIR
python -m pip install --upgrade --user $PKGDIR/*.whl

社区

作为TensorFlow的一部分,我们致力于营造一个开放和欢迎的环境。

有关更多详细信息,请参阅 TensorFlow 社区 页面。在这里查看我们的最新公告

贡献

我们渴望与您合作!请参阅 CONTRIBUTING.md 了解如何贡献。本项目遵循 TensorFlow 的 行为准则。通过参与,您将期望遵守此准则。

参考文献

如果您在论文中使用 TensorFlow Probability,请引用

  • TensorFlow Distributions。 Joshua V. Dillon, Ian Langmore, Dustin Tran, Eugene Brevdo, Srinivas Vasudevan, Dave Moore, Brian Patton, Alex Alemi, Matt Hoffman, Rif A. Saurous. arXiv 预印本 arXiv:1711.10604, 2017.

(我们知道 TensorFlow Probability 的内容远不止分布,但分布论文概述了我们的愿景,目前引用它是个不错的选择。)

项目详情


发布历史 发布通知 | RSS 源

下载文件

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

源代码分发

本发行版没有提供源代码分发文件。请参阅关于生成分发存档的教程。

构建的分发

tfp_nightly-0.25.0.dev20241004-py2.py3-none-any.whl (7.0 MB 查看哈希值)

上传时间 Python 2 Python 3

由以下提供支持