当前位置: 首页 > 工具软件 > ZhuSuan > 使用案例 >

Welcome to ZhuSuan DOC

申宜
2023-12-01

ZhuSuan是一个用于贝叶斯深度学习的python概率编程库,它结合了贝叶斯方法和深度学习的互补优势。 ZhuSuan建立在Tensorflow之上。 与现有的深度学习库(主要用于确定性神经网络和监督任务)不同,ZhuSuan提供深度学习风格原语和算法,用于构建概率模型和应用贝叶斯推理。 支持的推理算法包括:

  • 具有可编程变分后验,各种目标和高级梯度估计器(SGVB,REINFORCE,VIMCO等)的变分推理。
  • 用于学习和评估模型的重要性抽样,具有可编程的建议。
  • Hamiltonian Monte Carlo(HMC)具有并行链,可选自动参数调整。

Installation

ZhuSuan仍处于发展阶段。 在第一个稳定版本(1.0)之前,请克隆GitHub存储库并运行。

在主目录中。 这将自动安装ZhuSuan及其依赖项。 ZhuSuan还需要Tensorflow 1.0或更高版本。 因为用户应该选择是否安装Tensorflow的cpu或gpu版本,所以我们不会将它包含在依赖项中。 请参阅安装Tensorflow。

After installation, open your python console and type:

>>> import zhusuan as zs

If no error occurs, you’ve successfully installed ZhuSuan.

Basic Concepts in ZhuSuan

Distribution and StochasticTensor

概率分布是构建有向图形模型(贝叶斯网络)的关键组件。 ZhuSuan为他们提供了两层抽象:分布和随机传感器(StochasticTensor),这对初学者来说可能有点混乱。 我们在这里明确他们的定义和联系。 

Distribution

Distribution类是各种概率分布的基类,它支持批输入,生成批量样本并评估给定值批次的概率。

可在以下页面上找到所有可用分发的列表:

单变量分布
多变量分布

这些分布可以通过(例如,单变量正态分布)从ZhuSuan访问:

>>> import zhusuan as zs
>>> a = zs.distributions.Normal(mean=0., logstd=0.)

分布的典型输入形状类似于batch_shape + input_shape。 其中input_shape表示非批输入参数的形状; batch_shape表示将多少独立输入馈送到分发中。 通常,分发支持广播输入。

可以通过调用分发对象的sample()方法生成样本。 形状为([n_samples] +)batch_shape + value_shape。 仅当传递n_samples为None(默认情况下)时,才会省略第一个附加轴,在这种情况下会生成一个样本。 value_shape是分布的非批量值形状。 对于单变量分布,其value_shape为[]。

单变量分布示例(正常):

>>> import tensorflow as tf
>>> _ = tf.InteractiveSession()

>>> b = zs.distributions.Normal([[-1., 1.], [0., -2.]], [0., 1.])

>>> b.batch_shape.eval()
array([2, 2], dtype=int32)

>>> b.value_shape.eval()
array([], dtype=int32)

>>> tf.shape(b.sample()).eval()
array([2, 2], dtype=int32)

>>> tf.shape(b.sample(1)).eval()
array([1, 2, 2], dtype=int32)

>>> tf.shape(b.sample(10)).eval()
array([10,  2,  2], dtype=int32)

 

 类似资料:

相关阅读

相关文章

相关问答