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 Probability、R和Stan之间比较分层线性模型。
- 贝叶斯高斯混合模型。使用概率生成模型进行聚类。
- 概率主成分分析。使用潜在变量进行降维。
- 高斯 Copulas。捕捉随机变量之间依赖关系的概率分布。
- TensorFlow 分布:温和的介绍。TensorFlow 分布的介绍。
- 理解 TensorFlow 分布形状。如何区分任意形状概率计算中的样本、批量和事件。
- TensorFlow Probability 案例研究:协方差估计。TensorFlow Probability应用于估计协方差的用户案例研究。
它还包括以下示例脚本
使用潜在代码和变分推理进行表示学习。
- 向量量化自动编码器。使用向量量化进行离散表示学习。
- 解耦序列变分自动编码器。使用变分推理在序列上进行解耦表示学习。
- 贝叶斯神经网络。具有不确定权重的神经网络。
- 贝叶斯逻辑回归。二元分类的贝叶斯推理。
安装
有关安装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包(tensorflow
或tensorflow-cpu
)。这使得我们可以维护一个包,而不是为CPU和GPU启用的TensorFlow维护单独的包。有关TensorFlow和TensorFlow Probability之间的依赖项的更多详细信息,请参阅TFP发行说明。
夜间构建
在pip包tfp-nightly
下还有TensorFlow Probability的夜间构建版本,它依赖于tf-nightly
或tf-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的一部分,我们致力于营造一个开放和欢迎的环境。
- Stack Overflow:提问或回答技术问题。
- GitHub:报告错误或提出功能请求。
- TensorFlow 博客:了解 TensorFlow 团队的内容和社区中的最佳文章。
- YouTube 频道:关注 TensorFlow 系列节目。
- tfprobability@tensorflow.org:开放邮件列表以进行讨论和提问。
有关更多详细信息,请参阅 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 的内容远不止分布,但分布论文概述了我们的愿景,目前引用它是个不错的选择。)
项目详情
哈希值 for tfp_nightly-0.25.0.dev20241004-py2.py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e8baa7fe582c089b9199dc133500340bbbe789eabbd10236fe265a0cc9a8abe0 |
|
MD5 | 63aa724ec8929b29c0726507d72d3187 |
|
BLAKE2b-256 | d5dad4d9f8c6aa52d72c64d4b2dd5173dbbb4ecf6dd38abc5edb0fd4c0daf35a |