• 文档 >
  • 模块代码 >
  • torch >
  • torch.distributions.beta
快捷键

torch.distributions.beta 的源代码

# mypy: 允许未类型化定义
导入 火炬
来自 火炬 导入 张量
来自 torch.distributions 导入 约束
来自 torch.distributions.dirichlet 导入 Dirichlet
来自 torch.distributions.exp_family 导入 指数族
来自 torch.distributions.utils 导入 广播全部
来自 torch 的类型 导入 _数字, _大小


全部 = ["Beta"]


[文档] 测试版(指数族): r"" 由 :attr:`concentration1` 和 :attr:`concentration0` 参数化的贝塔分布。 示例:: >>> # xdoctest: +IGNORE_WANT("非确定性") >>> m = Beta(torch.tensor([0.5]), torch.tensor([0.5])) >>> m.sample() # 贝塔分布,参数为 concentration concentration1 和 concentration0 tensor([ 0.1046]) 参数: 浓度 1(浮点数或张量):分布的第 1 个浓度参数 (通常称为 alpha) 浓度 0(浮点数或张量):分布的第 2 个浓度参数 (通常称为 beta) "沉浸式翻译" 约束参数 = { 浓度 1: 约束.正面, 浓度 0: 约束.正面, } 支持 = 约束.单位区间 has_rsample = 真实 def __init__(self, concentration1, concentration0, validate_args=): 如果 isinstance(浓度 1, _数字) isinstance(浓度 0, _数字): 浓度 1_浓度 0 = torch.张量( [float(浓度 1), float(浓度 0)] ) 否则: 浓度 1, 集中 0 = broadcast_all( 集中 1, 集中 0 ) 集中 1_集中 0 = torch.( [浓度 1, 浓度 0] -1 ) self._狄利克雷 = Dirichlet 分布( 浓度 1_浓度 0, 验证参数=验证参数 ) 超级().__init__(self._dirichlet._batch_shape, 验证参数=验证参数)
[文档] def expand(self, batch_shape, _instance=None): new = self._get_checked_instance(Beta, _instance) batch_shape = torch.Size(batch_shape) new._dirichlet = self._dirichlet.expand(batch_shape) super(Beta, new).__init__(batch_shape, validate_args=False) new._validate_args = self._validate_args 返回新的
@property def 均值
(self) -> 张量: 返回 self.浓度 1 / (self.浓度 1 + self.浓度 0) @property def 模式(self) -> 张量: 返回 self.迪利克雷.模式[..., 0] @property def 方差(self) -> 张量: 总计 = self.浓度 1 + self.浓度 0 返回 self.浓度 1 * self.浓度 0 / (总计.pow(2) * (总计 + 1))
[文档] def rsample(self, sample_shape: _size = ()) -> Tensor: return self._dirichlet.rsample(sample_shape).select(-1, 0)
[文档] def log_prob(self, value): if self._validate_args: self._validate_sample(value) heads_tails = torch.stack([value, 1.0 - value], -1) return self._dirichlet.log_prob(heads_tails)
[docs] def entropy(self): return self._dirichlet.entropy()
@property def concentration1(self) -> 张量: 结果
= self.迪利克雷.浓度[..., 0] 如果 isinstance(结果, ): 返回 torch.张量[结果]) 否则: 返回 结果 @property def 浓度 0(self) -> 张量: 结果 = self.迪利克雷.浓度[..., 1] 如果 isinstance(结果, ): 返回 torch.张量[结果]) 否则: 返回 结果 @property def 自然参数(self) -> 元组[张量, 张量] 返回 (self.集中 1, self.集中 0) def _对数归一化器(self, x, y): 返回 torch.lgamma(x) + torch.lgamma(y) - torch.lgamma(x + y)

© 版权所有 PyTorch 贡献者。

使用 Sphinx 构建,并使用 Read the Docs 提供的主题。

文档

查看 PyTorch 的全面开发者文档

查看文档

教程

深入了解初学者和高级开发者的教程

查看教程

资源

查找开发资源,获取您的疑问解答

查看资源