class plate(name: str, size: Optional[ int] = None, subsample_size: Optional[ int] = None, subsample: Optional[ torch.Tensor] = None, dim: Optional[ int] = None, use_cuda: Optional[ bool] = None, device: Optional[ str] = None) [source] ¶
基元plate
获取参数存储()→ pyro.params.param_store。ParamStoreDict [来源] ¶
返回全局 ParamStoreDict.
清除全局 ParamStoreDict.
如果你在REPL工作,这尤其有用。我们建议在每个训练循环之前调用它(以避免从过去的模型中泄漏参数),并且在每个单元测试之前调用它(以避免跨测试泄漏参数)。
参数(名字: 潜艇用热中子反应堆(submarine thermal reactor的缩写), 初始张量: 可选择的[联盟[ 火炬。张量, 请求即付的[[], 火炬。张量]]] = 没有人, 限制: 火炬.分布.约束.约束 = 真实(), 事件_尺寸: 可选择的[ (同Internationalorganizations)国际组织] = 没有人)→ 火炬。张量 [来源] ¶
将变量作为参数保存在param存储中。若要与参数存储或写入磁盘进行交互,请参见 因素.
因素
- 名字 ( 潜艇用热中子反应堆(submarine thermal reactor的缩写))–参数名称
- 初始张量 ( 火炬。张量或者请求即付的)–返回张量的初始张量或惰性可调用函数。对于大的张量,写例如
lambda: torch.randn(100000)
,只对初始语句进行评估。 - 限制 ( 火炬.分布.约束.约束)–火炬约束,默认为
constraints.real
. - 事件_尺寸 ( (同Internationalorganizations)国际组织)–(可选)与批处理无关的最右侧维度的数量。左边的维度将被视为批维度;如果param语句在二次抽样的样品板内,则参数的相应批次尺寸将相应地进行二次抽样。如果未指定,所有维度都将被视为事件变暗,并且不会执行二次采样。
返回
受约束的参数。可以通过以下方式访问基本的无约束参数pyro.param(...).unconstrained()
,在哪里.unconstrained
是weakref属性。
返回类型
样品(名字: 潜艇用热中子反应堆(submarine thermal reactor的缩写), 【数学】函数: pyro . distributions . torch _ distribution。火炬分配混合, *一个参数名, 无线电定向标选择器: 可选择的[ 火炬。张量] = 没有人, obs_mask: 可选择的[火炬。BoolTensor] = 没有人, 暗示: 可选择的[ pyro.poutine.runtime.InferDict] = 没有人, **夸尔斯)→ 火炬。张量 [来源] ¶
调用随机函数fn
额外的副作用取决于name
和封闭上下文(例如推理算法)。看见 Pyro简介进行讨论。
因素
- 名字–样品名称
- 【数学】函数–分配类别或功能
- 无线电定向标选择器–观察数据(可选;应仅在推理的上下文中使用)可选地在kwargs中指定
- obs_mask ( 弯曲件或者 张量)–形状的可选布尔张量掩码,可通过
fn.batch_shape
。如果提供,mask=True的事件将取决于obs
其余的事件将通过抽样来估算。这引入了一个名为name + "_unobserved"
导游应该使用它。 - 暗示 ( 词典)–kwargs中指定的推理参数的可选字典。有关详细信息,请参见推理文档。
返回
样品
因素(名字: 潜艇用热中子反应堆(submarine thermal reactor的缩写), 对数因子: 火炬。张量, *, has_rsample: 可选择的[ 弯曲件] = 没有人)→ 没有人 [来源] ¶
Factor语句将任意对数概率因子添加到概率模型中。
警告
在指南中使用因子语句时,您需要指定因子语句是来自完全重新参数化的采样(例如重新参数化变量转换的雅可比行列式)还是来自非参数化的采样(例如离散样本)。对于完全重新参数化的情况,设置has_rsample=True
;对于非参数化的情况,设置has_rsample=False
。这仅在指南中需要,在模型中不需要。
因素
- 名字 ( 潜艇用热中子反应堆(submarine thermal reactor的缩写))–小样本的名称
- 对数因子 ( 火炬。张量)–可能分批的对数概率因子。
- has_rsample ( 弯曲件)–是否
log_factor
源于完全重新参数化的分布。在模型中使用时默认为False,但必须指定在指南中使用。
确定性的(名字: 潜艇用热中子反应堆(submarine thermal reactor的缩写), 价值: 火炬。张量, 事件_尺寸: 可选择的[ (同Internationalorganizations)国际组织] = 没有人)→ 火炬。张量 [来源] ¶
确定性语句来添加 Delta名为的网站名字和价值价值追踪到。当我们想要记录完全由父母决定的值时,这很有用。例如:
注意
场地不影响模型密度。这当前转换为 sample()语句,但将来可能会改变。
因素
- 名字 ( 潜艇用热中子反应堆(submarine thermal reactor的缩写))–站点的名称。
- 价值 ( 火炬。张量)–网站的价值。
- 事件_尺寸 ( (同Internationalorganizations)国际组织)–可选事件维度,默认为value.ndim.
子样品(数据: 火炬。张量, 事件_尺寸: (同Internationalorganizations)国际组织)→ 火炬。张量 [来源] ¶
基于封闭对数据张量进行子采样的子采样语句 plate南
这通常在以下参数上调用model()
当子采样由自动执行时 plates通过传递subsample
或者subsample_size
克沃格。例如,以下内容是等效的:
因素
- 数据 ( 张量)–批量数据的张量。
- 事件_尺寸 ( (同Internationalorganizations)国际组织)–数据张量的事件维度。左侧的维度被视为批次维度。
返回
的二次抽样版本data
返回类型
班级盘子(名字: 潜艇用热中子反应堆(submarine thermal reactor的缩写), 大小: 可选择的[ (同Internationalorganizations)国际组织] = 没有人, 子样本_大小: 可选择的[ (同Internationalorganizations)国际组织] = 没有人, 子样品: 可选择的[ 火炬。张量] = 没有人, 暗淡的: 可选择的[ (同Internationalorganizations)国际组织] = 没有人, 使用_cuda: 可选择的[ 弯曲件] = 没有人, 设备: 可选择的[ 潜艇用热中子反应堆(submarine thermal reactor的缩写)] = 没有人) [来源] ¶
碱基: pyro.poutine.plate_messenger.PlateMessenger
条件独立变量序列的构造。
plate
可以作为生成器顺序使用,也可以作为上下文管理器并行使用(以前irange
和iarange
,分别为)。
连续的 plate类似于range()
因为它生成一系列值。
矢量化 plate类似于 torch.arange()因为它产生一个索引数组,通过该数组可以索引其他张量。 plate不同于 torch.arange()因为它还通知推理算法被索引的变量是有条件独立的。为此, plate是作为上下文管理器而不是函数提供的,用户必须保证中的所有计算 plate上下文是有条件独立的:
此外, plate可以通过对索引进行二次采样并通知推理算法来缩放各种计算值,从而利用条件独立性假设。这通常用于对小批量数据进行二次抽样:
缺席subsample_size=False
这简单地产生了一个torch.arange(0, size)
。如果0 < subsample_size <= size
这产生了单个随机批次的大小索引subsample_size
并将所有对数似然项缩放为size/batch_size
在这种情况下。
警告
只有在上下文中所有计算都是有条件独立的情况下,这才是正确的。
因素
- 名字 ( 潜艇用热中子反应堆(submarine thermal reactor的缩写))–帮助推理算法匹配的唯一名称 plate模型和指南之间的站点。
- 大小 ( (同Internationalorganizations)国际组织)–二次抽样集合的可选大小(如停止内置的范围).
- 子样本_大小 ( (同Internationalorganizations)国际组织)–二次抽样中使用的小批量的大小。默认为大小.
- 子样品(任何支持len()。)–用于用户定义子采样方案的可选自定义子采样。如果指定,则子样本_大小将被设置为len(子样本).
- 暗淡的 ( (同Internationalorganizations)国际组织)–用于此独立性指数的可选维度。如果指定,
dim
应为负值,即应从右侧开始索引。如果没有指定,dim
被设置为所有封闭的左边的最右边的尺寸plate
背景。 - 使用_cuda ( 弯曲件)–已弃用,请使用设备请改为arg。可选布尔值,指定是否将cuda张量用于子样品和log_prob。默认为
torch.Tensor.is_cuda
. - 设备 ( 潜艇用热中子反应堆(submarine thermal reactor的缩写))–可选关键字,指定放置结果的设备子样品和log_prob开着。默认情况下,结果与默认张量放置在同一设备上。
返回
一个可重用的上下文管理器 torch.Tensor指数。
例子
看见 SVI第二部分进行长时间的讨论。
板材_堆叠(前缀: 潜艇用热中子反应堆(submarine thermal reactor的缩写), 大小: 顺序[ (同Internationalorganizations)国际组织], 最右边_dim: (同Internationalorganizations)国际组织 = - 1)→ 迭代程序[ 没有人] [来源] ¶
创建一个连续的堆栈 plate带有尺寸的:
因素
- 前缀 ( 潜艇用热中子反应堆(submarine thermal reactor的缩写))–铭牌的名称前缀。
- 大小 (可迭代的)–可重复的板尺寸。
- 最右边_dim ( (同Internationalorganizations)国际组织)–从右数,最右边的dim。
组件(名字: 潜艇用热中子反应堆(submarine thermal reactor的缩写), nn _模块: 火炬. nn .模块.模块.模块, 更新模块参数: 弯曲件 = 错误的)→ 火炬. nn .模块.模块.模块 [来源] ¶
注册的所有参数 torch.nn.Module用Pyro的 param_store。结合使用 ParamStoreDict save()和 load()功能,这允许用户保存和加载模块。
注意
考虑改用 PyroModule,是的更新替代产品pyro.module()
它更好地支持:jitting,在C++中服务,以及将参数转换为随机变量。有关详细信息,请参见 模块教程 .
因素
- 名字 ( 潜艇用热中子反应堆(submarine thermal reactor的缩写))–模块的名称
- nn _模块 ( 火炬. nn .模块)–要向Pyro注册的模块
- 更新模块参数–确定PyTorch模块中的参数是否被ParamStore中的值覆盖(如果有)。默认为错误的
返回
火炬. nn .模块
随机模块(名字, nn _模块, 在先的;在前的, *一个参数名, **夸尔斯) [来源] ¶
警告
这随机模块原语已被弃用,并将在未来的版本中被删除。使用 PyroModule而不是创建贝叶斯模型 torch.nn.Module实例。参见 贝叶斯回归教程举个例子。
不推荐使用在模块的参数上放置一个priornn _模块。返回一个分布(可调用)nn。组件s,它在调用时返回一个采样的nn。组件.
因素
- 名字 ( 潜艇用热中子反应堆(submarine thermal reactor的缩写))–烟火模块的名称
- nn _模块 ( 火炬. nn .模块)–要向pyro注册的模块
- 在先的;在前的–pyro分布、随机函数或python字典,以参数名作为关键字,以相应的分布/随机函数作为值。
返回
返回采样模块的可调用函数
实验确保中的所有值data
是基础,而不是懒惰的爱好者或价值观。这在与结合使用时非常有用pyro.poutine.collapse()
.
启用_验证(is _验证: 弯曲件 = 真实的)→ 没有人 [来源] ¶
在Pyro中启用或禁用验证检查。验证检查提供有用的警告和错误,例如NaN检查、验证分布参数和支持值、检测ELBO和MCMC的不正确使用。由于这些检查中的一些可能是昂贵的,您可能想要禁用成熟模型的验证以加速推断。
默认行为模仿Python的assert
语句:默认情况下,验证是打开的,但是如果Python在优化模式下运行(通过python -O
).同样,默认行为取决于Python的全局__debug__
价值通过pyro.enable_validation(__debug__)
.
对于所有支持PyTorch jit的推理算法,在jit编译期间会暂时禁用验证。我们建议用非JIT化的推理算法开发模型以简化调试,一旦模型正确,就可以选择转移到JIT化的推理。
因素
is _验证 ( 弯曲件)–(可选;默认为True)是否启用验证检查。
验证_启用(is _验证: 弯曲件 = 真实的)→ 迭代程序[ 没有人] [来源] ¶
临时启用/禁用验证检查时有用的上下文管理器。
因素
is _验证 ( 弯曲件)–(可选;默认为真)临时验证检查覆盖。
找到;查出(【数学】函数=没有人, 忽略_警告=错误的, jit _选项=没有人) [来源] ¶
懒惰的替代品 torch.jit.trace()与调用的Pyro函数一起工作pyro.param()
.
实际的编译工件存储在compiled
输出的属性。对此属性调用诊断方法。
示例:
因素
- 【数学】函数 (请求即付的)–要跟踪的函数。
- 忽略_警告 ( 弯曲件)–是否忽略jit警告。
- jit _选项 ( 词典)–要传递给的可选选项字典 torch.jit.trace(),例如
{"optimize": False}
.