在 Pyro 中,`pyro.sample` 函数用于在模型中进行随机抽样操作,它是构建概率模型的核心部分。当你想要从某个概率分布中抽样,或者当你想要定义模型中一个观测到的数据点时,你会使用到 `pyro.sample`。
以下是 `pyro.sample` 的一些基本用法:
1. **从先验分布抽样**:
在贝叶斯模型中,你可能会从先验分布中抽样以定义模型的潜在变量。
2. **定义观测数据**:
当数据是观测到的,并且你想要在模型中使用这些数据时,你可以使用 `pyro.sample` 并提供观测到的值。
3. **使用不同的分布**:
你可以根据模型的需要使用不同的分布,例如伯努利分布、泊松分布等。
4. **使用 `pyro.plate` 进行批量处理**:
当你处理一批数据时,可以使用 `pyro.plate` 来指示 Pyro 这些数据是条件独立的。
5. **变换分布的形状**:
使用 `.to_event(1)` 可以改变分布的形状,使其适合多元分布的情况。
6. **使用自定义分布**:
如果你有自定义的分布,也可以使用 `pyro.sample` 进行抽样。
请注意,`pyro.sample` 的第一个参数是样本点的名称,这有助于在模型中标识这个样本点。第二个参数是你要抽样的分布,第三个参数 `obs` 是可选的,当你有观测数据时提供。如果你不提供 `obs`,则 Pyro 会从分布中随机抽样。如果你提供了 `obs`,则 Pyro 会使用这个观测数据,并在计算对数概率时使用它。