torch.distributions.half_cauchy 的源代码
# mypy: 允许未类型化定义
导入
数学
导入
火炬
from 火炬
导入
无穷,
张量
from torch.distributions 导入
约束
from torch.distributions.cauchy 导入
拉普拉斯分布
from torch.distributions.transformed_distribution 导入
转换分布
from torch.distributions.transforms 导入
绝对值变换
全部 = [
半柯西分布]
[文档]
类
半高斯(
转换分布):
r
```python
# 假设输入文本为:
input_text = """Immersive Translate"""
# 翻译函数(此处仅为示例,实际翻译功能需要调用真实的翻译 API)
def translate_to_simplified_chinese(text):
# 这里应该调用真实的翻译 API 进行翻译
# 由于示例中不使用真实的 API,以下为模拟翻译结果
return text # 假设翻译结果与原文相同
# 输出翻译结果
translated_text = translate_to_simplified_chinese(input_text)
print(translated_text)
```
输出:
```
Immersive Translate
```
创建一个由 `scale` 参数化的半柯西分布
X 符合 Cauchy(0, scale)
Y = |X| 符合 HalfCauchy(scale)
示例::
>>> # xdoctest: +IGNORE_WANT("非确定性")
>>> m = HalfCauchy(torch.tensor([1.0]))
>>> m.sample() # 偶然分布,尺度为 1
tensor([ 2.3214])
参数:
scale (浮点数或张量): 全部柯西分布的尺度
"""
约束参数 = {
"缩放":
约束.
正的}
支持 =
约束.
非负的
has_rsample = 真实
定义 __init__(
自我,
比例,
验证参数=
无):
base_dist = 柯西(0,
比例,
验证参数=
错误)
超级().__init__(base_dist,
Abs 变换(),
验证参数=
验证参数)
[文档] def expand(self, batch_shape, _instance=None):
new = self._get_checked_instance(HalfCauchy, _instance)
return super().expand(batch_shape, _instance=new)
@property
定义
比例(
自我)
翻译
张量:
返回
自我.
基础分布.
缩放
@property
定义
均值(
自我)
翻译
张量:
返回
火炬.full(
自我.
_扩展形状(),
数学.
无穷,
数据类型=
自我.
比例.
数据类型,
设备=
自我.
比例.
设备,
)
@property
定义
模式(
自我)
翻译
张量:
返回
火炬.
等于零的(
自我.
比例)
@property
定义
方差(
自我)
翻译
张量:
返回
自我.
基础分布.
方差
[文档] def log_prob(self, value):
if self._validate_args:
self._validate_sample(value)
value = torch.as_tensor(
value, dtype=self.base_dist.scale.dtype, device=self.base_dist.scale.device
)
log_prob = self.base_dist.log_prob(value) + math.log(2)
log_prob = torch.where(value >= 0, log_prob, -inf)
return log_prob
[文档] def cdf(self, value):
if self._validate_args:
self._validate_sample(value)
return 2 * self.base_dist.cdf(value) - 1
[文档] def icdf(self, prob):
return self.base_dist.icdf((prob + 1) / 2)
[文档] def entropy(self):
return self.base_dist.entropy() - math.log(2)