Pytorch提供的正态分布,官方文档
创建方式
>>> m = Normal(torch.tensor([0.0]), torch.tensor([1.0]))
>>> m.sample() # 生成数据,可传shape参数
tensor([ 0.1046])
接口log_prob(self, value)
返回value概率的log值,正态分布公式为
f
(
x
)
=
1
2
π
σ
e
x
p
(
−
(
x
−
μ
)
2
2
σ
2
)
f(x)=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(x-\mu)^2}{2\sigma^2})
f(x)=2πσ1exp(−2σ2(x−μ)2)
函数的计算公式为:
l
o
g
(
f
(
x
)
)
=
−
l
o
g
(
2
π
)
−
l
o
g
(
σ
)
−
(
x
−
μ
)
2
2
σ
2
log(f(x)) = -log(\sqrt{2\pi})-log(\sigma)-\frac{(x-\mu)^2}{2\sigma^2}
log(f(x))=−log(2π)−log(σ)−2σ2(x−μ)2
接口def entropy(self)
返回值公式
1
2
+
2
π
2
+
l
o
g
(
σ
)
\frac{1}{2}+\frac{2\pi}{2}+log(\sigma)
21+22π+log(σ)
看着就是正态分布公式的log
值,但不知为什么多个
1
2
\frac{1}{2}
21