使用TensorFlow或PyTorch构建贝叶斯模型的Python包
probflow的Python项目详细描述
ProbFlow是一个Python包,用于使用TensorFlow 2.0或{a6}构建概率贝叶斯模型,对这些模型进行随机变分推理,并评估模型的推论。它提供了构建贝叶斯神经网络的高级模块,以及用于构建定制贝叶斯模型的低级参数和分布。
这仍然是一项正在进行的工作。
- Git存储库:http://github.com/brendanhasz/probflow
- 文档:http://probflow.readthedocs.io
- 错误报告:http://github.com/brendanhasz/probflow/issues
入门
ProbFlow允许您快速、轻松地构建、调整和评估自定义贝叶斯模型(或ready-made个模型!)在TensorFlow 2.0和TensorFlow Probability或{a6}之上运行。
对于ProbFlow,贝叶斯模型的核心构建块是参数和概率分布(当然还有输入数据)。参数定义自变量(特征)如何预测因变量(目标)的概率分布。
例如,一个简单的贝叶斯线性回归
可以通过创建ProbFlow模型来构建:
importprobflowaspfimporttensorflowastfclassLinearRegression(pf.ContinuousModel):def__init__(self):self.weight=pf.Parameter(name='weight')self.bias=pf.Parameter(name='bias')self.std=pf.ScaleParameter(name='sigma')def__call__(self,x):returnpf.Normal(x*self.weight()+self.bias(),self.std())model=LinearRegression()
然后,可以使用随机变分推断来拟合模型,在one line中:
^{pr2}$您可以为新数据生成预测:
# x_test is a Numpy array or pandas DataFrame >>> model.predict(x_test)[0.983]
计算新数据的概率预测,置信区间为95%:
model.pred_dist_plot(x_test,ci=0.95)
使用指标评估模型的性能:
>>> model.metric('mse',x_test,y_test)0.217
检查拟合模型参数的后验分布,置信区间为95%:
model.posterior_plot(ci=0.95)
通过检查预测间隔的准确度,调查模型捕捉不确定性的能力:
>>> model.pred_dist_coverage(ci=0.95)0.903
并诊断,其中您的模型在捕捉不确定性方面存在问题:
model.coverage_by(ci=0.95)
ProbFlow还提供了更复杂的模块,例如构建贝叶斯神经网络所需的模块。此外,您可以将ProbFlow与TensorFlow(或PyTorch!)代码。例如,即使是这样一个有点复杂的多层贝叶斯神经网络:
只需几行即可构建并与ProbFlow配合:
classDensityNetwork(pf.ContinuousModel):def__init__(self,units,head_units):self.core=pf.DenseNetwork(units)self.mean=pf.DenseNetwork(head_units)self.std=pf.DenseNetwork(head_units)def__call__(self,x):x=self.core(x)returnpf.Normal(self.mean(x),tf.exp(self.std(x)))# Create the modelmodel=DensityNetwork([x.shape[1],256,128],[128,64,32,1])# Fit it!model.fit(x,y)
为了方便起见,ProbFlow还包括几个标准任务的pre-built models(如线性回归、logistic回归和多层密集神经网络)。例如,通过使用ProbFlow现成的线性回归模型,上述线性回归示例可以用更少的工作量完成:
model=pf.LinearRegression(x.shape[1])model.fit(x,y)
使用ProbFlow现成的Denseregress模型,可以很容易地构建多层贝叶斯神经网络:
model=pf.DenseRegression([x.shape[1],128,64,1])model.fit(x,y)
使用参数和分布作为简单的构建块,ProbFlow允许无痛地创建更复杂的贝叶斯模型,比如 generalized linear models, deep time-to-event models, neural matrix factorization型号,以及 Gaussian mixture models。看看examples和{a20}了解更多信息!
安装
在安装ProbFlow之前,首先需要安装PyTorch或TensorFlow 2.0和TensorFlow Probability。见more details here。
然后,您可以安装ProbFlow本身:
pip install probflow
支持
在GitHub issues中发布错误报告、功能请求和教程请求。
贡献
Pull requests完全欢迎!任何贡献都是值得赞赏的,从指出打字错误到编写新的应用程序和发行版这样重要的事情。
为什么叫这个名字,ProbFlow?在
因为这是一个概率建模的软件包,它是建立在TensorFlow上的。` \(ツ)´´
- 项目
标签: