简易定制指南¶
EasyGuide¶
- class EasyGuide(model)[source]¶
-
“简易指南”的基类,它比
AutoGuide
更灵活,但比原始的 Pyro 指南更容易编写。派生类应该定义一个
guide()
方法。这个guide()
方法可以将普通指南语句(例如pyro.sample
和pyro.param
)与以下特殊语句结合使用group = self.group(...)
选择模型中的多个pyro.sample
站点。有关后续方法,请参见Group
。with self.plate(...): ...
应该用于代替pyro.plate
。self.map_estimate(...)
对单个站点使用Delta
指南。
派生类还可以重写
init()
方法,为模型站点提供自定义初始化。- 参数
model (callable) – 一个 Pyro 模型。
- property model¶
- init(site)[source]¶
模型初始化方法,可由用户重写。
这应该输入一个站点并输出该站点的有效样本。默认行为是抽取随机样本
return site["fn"]()
有关其他可能的初始化函数,请参见 https://docs.pyro.org.cn/en/stable/infer.autoguide.html#module-pyro.infer.autoguide.initialization
- plate(name, size=None, subsample_size=None, subsample=None, *args, **kwargs)[source]¶
围绕
pyro.plate
的包装器,允许 EasyGuide 自动构造板。你应该在guide()
实现中使用它,而不是pyro.plate
。
easy_guide¶
- easy_guide(model)[source]¶
创建
EasyGuide
的便捷装饰器。以下是等效的# Version 1. Decorate a function. @easy_guide(model) def guide(self, foo, bar): return my_guide(foo, bar) # Version 2. Create and instantiate a subclass of EasyGuide. class Guide(EasyGuide): def guide(self, foo, bar): return my_guide(foo, bar) guide = Guide(model)
注意
@easy_guide
包装器不能被 pickle 化;要构建可以被 pickle 化的指南,请改为继承EasyGuide
。- 参数
model (callable) – 一个 Pyro 模型。