TanhNormal¶
- class torchrl.modules.TanhNormal(loc: Tensor, scale: Tensor, upscale: Union[Tensor, Number] = 5.0, low: Union[Tensor, Number] = - 1.0, high: Union[Tensor, Number] = 1.0, event_dims: Optional[int] = None, tanh_loc: bool = False, safe_tanh: bool = True, **kwargs)[source]¶
实现具有位置缩放的 TanhNormal 分布。
位置缩放防止位置在应用
TanhTransform
时“离 0 太远”,但最终会导致数值不稳定的样本和较差的梯度计算(例如,梯度爆炸)。在实践中,通过位置缩放,位置根据以下公式计算:\[loc = tanh(loc / upscale) * upscale.\]- 参数:
loc (torch.Tensor) – 正态分布位置参数
scale (torch.Tensor) – 正态分布 sigma 参数(方差的平方根)
upscale (torch.Tensor 或 数字) –
公式中的 ‘a’ 缩放因子
\[loc = tanh(loc / upscale) * upscale.\]low (torch.Tensor 或 数字, 可选) – 分布的最小值。默认为 -1.0;
high (torch.Tensor 或 数字, 可选) – 分布的最大值。默认为 1.0;
event_dims (int, 可选) – 描述动作的维度数。默认为 1。将
event_dims
设置为0
将导致对数概率与输入形状相同,1
将缩减(求和)最后一个维度,2
将缩减最后两个维度,依此类推。tanh_loc (bool, 可选) – 如果为
True
,则上述公式用于位置缩放,否则保留原始值。默认为False
;safe_tanh (bool, 可选) – 如果为
True
,则“安全地”完成 Tanh 转换,以避免数值溢出。这目前将与torch.compile()
一起中断。
- property mean¶
返回分布的均值。
- property mode¶
返回分布的模式。
- property support¶
返回表示此分布支持的
Constraint
对象。