StudentT¶
学生 t 分布
数学公式:
上面的数学公式中:
\(df = \nu\):自由度;
\(loc = \mu\):平移变换参数;
\(scale = \sigma\):缩放变换参数;
\(\Gamma(\cdot)\):gamma 函数;
参数¶
df (float|Tensor) - 学生 t 分布的自由度,需大于 0。若输入类型是 float,
df
会被转换成数据类型为 paddle 全局默认数据类型的 1-D tensor。若输入类型是 tensor,则支持的数据类型有 float32 或 float64。loc (float|Tensor) - 学生 t 分布的平移变换参数。若输入类型是 float,
loc
会被转换成数据类型为 paddle 全局默认数据类型的 1-D tensor。若输入类型是 tensor,则支持的数据类型有 float32 或 float64。scale (float|Tensor) - 学生 t 分布的缩放变换参数,需大于 0。若输入类型是 float,
scale
会被转换成数据类型为 paddle 全局默认数据类型的 1-D tensor。若输入类型是 tensor,则支持的数据类型有 float32 或 float64。name (str,可选) - 具体用法请参见 Name,一般无需设置,默认值为 None。
代码示例¶
>>> import paddle
>>> from paddle.distribution import StudentT
>>> paddle.set_device('cpu')
>>> paddle.seed(100)
>>> dist = StudentT(df=10.0, loc=0.0, scale=1.0)
>>> dist.sample([3])
Tensor(shape=[3, 1], dtype=float32, place=Place(cpu), stop_gradient=True,
[[-2.07709980],
[ 0.27981189],
[ 0.00881413]])
>>> dist2 = StudentT(df=paddle.to_tensor([10.0, 5.0]), loc=paddle.to_tensor([0.0, 0.0]), scale=paddle.to_tensor([1.0, 2.0]))
>>> value_tensor = paddle.to_tensor([0.8], dtype="float32")
>>> lp = dist2.log_prob(value_tensor)
>>> print(lp)
Tensor(shape=[2], dtype=float32, place=Place(cpu), stop_gradient=True,
[-1.28509235, -1.75626254])
>>> p = dist2.prob(value_tensor)
>>> print(p)
Tensor(shape=[2], dtype=float32, place=Place(cpu), stop_gradient=True,
[0.27662504, 0.17268908])
>>> entropy = dist2.entropy()
>>> print(entropy)
Tensor(shape=[2], dtype=float32, place=Place(cpu), stop_gradient=True,
[1.52126312, 2.32064891])
方法¶
sample(shape=[])¶
从学生 t 分布中生成满足特定形状的样本数据。最终生成样本形状为 shape+batch_shape
。
参数
shape (Sequence[int],可选):采样次数。
返回
Tensor:样本数据。其维度为 \(\text{sample shape} + \text{batch shape}\) 。
entropy()¶
计算学生 t 分布的信息熵。
上面的数学公式中:
\(\nu\):自由度;
\(\Gamma(\cdot)\):gamma 函数;
\(\psi(\cdot)\):digamma 函数;
返回
学生 t 分布的信息熵,数据类型与 df
相同。