MultivariateNormalDiag

  • class paddle.fluid.layers.MultivariateNormalDiag(loc, scale)[源代码]

多元高斯分布

概率密度函数(pdf)为:

MultivariateNormalDiag - 图1

  • 上面公式中:
    • MultivariateNormalDiag - 图2 表示: 对矩阵求逆
    • MultivariateNormalDiag - 图3 表示:矩阵相乘
    • MultivariateNormalDiag - 图4 表示:求行列式的值
  • 参数:
    • loc (list|numpy.ndarray|Variable) - 形状为 MultivariateNormalDiag - 图5 的多元高斯分布的均值列表。数据类型为float32。
    • scale (list|numpy.ndarray|Variable) - 形状为 MultivariateNormalDiag - 图6 的多元高斯分布的对角协方差矩阵,且除对角元素外,其他元素取值均为0。数据类型为float32。

代码示例

  1. import numpy as np
  2. from paddle.fluid import layers
  3. from paddle.fluid.layers import MultivariateNormalDiag
  4.  
  5. a_loc_npdata = np.array([0.3,0.5],dtype="float32")
  6. a_loc_tensor = layers.create_tensor(dtype="float32")
  7. layers.assign(a_loc_npdata, a_loc_tensor)
  8.  
  9. a_scale_npdata = np.array([[0.4,0],[0,0.5]],dtype="float32")
  10. a_scale_tensor = layers.create_tensor(dtype="float32")
  11. layers.assign(a_scale_npdata, a_scale_tensor)
  12.  
  13. b_loc_npdata = np.array([0.2,0.4],dtype="float32")
  14. b_loc_tensor = layers.create_tensor(dtype="float32")
  15. layers.assign(b_loc_npdata, b_loc_tensor)
  16.  
  17. b_scale_npdata = np.array([[0.3,0],[0,0.4]],dtype="float32")
  18. b_scale_tensor = layers.create_tensor(dtype="float32")
  19. layers.assign(b_scale_npdata, b_scale_tensor)
  20.  
  21. a = MultivariateNormalDiag(a_loc_tensor, a_scale_tensor)
  22. b = MultivariateNormalDiag(b_loc_tensor, b_scale_tensor)
  23.  
  24. a.entropy()
  25. # [2.033158] with shape: [1]
  26. b.entropy()
  27. # [1.7777451] with shaoe: [1]
  28.  
  29. a.kl_divergence(b)
  30. # [0.06542051] with shape: [1]
  • kl_divergence(other)

计算相对于另一个多元高斯分布的KL散度

  • 参数:
    • other (MultivariateNormalDiag) - 输入的另一个多元高斯分布。数据类型为float32。

返回:相对于另一个多元高斯分布的KL散度,数据类型为float32

返回类型:Variable

  • entropy()

信息熵

返回:多元高斯分布的信息熵,数据类型为float32

返回类型:Variable