shape_utils#

此子模块包含各种函数,这些函数将 numpy 的广播规则应用于形状元组,以及从概率分布中抽取的样本。

在从生成模型中广播样本时,主要的挑战是每个随机变量都有一个核心形状。当我们从给定的随机变量中抽取许多独立同分布的样本时,例如如果我们请求 size_tuple 个独立同分布的抽取,结果通常是一个 size_tuple + RV_core_shape。在生成模型的层次结构中,下游的随机变量如果条件依赖于我们上面采样的值,将会得到一个形状与其参数期望的核心形状不一致的数组。这有时是一个问题,因为它阻碍了复杂层次模型中的常规广播,从而使得先验和后验预测采样变得困难。

此模块引入了一些函数,这些函数能够感知请求的 size_tuple 独立同分布样本,并在核心形状上进行广播,透明地忽略或移动前置的 size_tuple 轴。

to_tuple(shape)

将整数、数组和 None 转换为元组

rv_size_is_none(size)

检查一个随机变量的大小是否为 None(即,pt.Constant([]))

change_dist_size(dist, new_size[, expand])

更改或扩展一个发行版的大小。