Categorical

class paddle.fluid.layers.Categorical(logits)[源代码]

类别分布是一种离散概率分布,其随机变量可以取K个相互独立类别的其中一个。

概率质量函数(pmf)为:

\[pmf(k; p_i) =\prod_{i=1}^{k} p_i^{[x=i]}\]
上面公式中:
  • \([x = i]\) 表示:如果 \(x==i\) ,则表达式取值为1,否则取值为0。
参数:
  • logits (list|numpy.ndarray|Variable) - 类别分布对应的logits。数据类型为float32。

代码示例

import numpy as np
from paddle.fluid import layers
from paddle.fluid.layers import Categorical

a_logits_npdata = np.array([-0.602,-0.602], dtype="float32")
a_logits_tensor = layers.create_tensor(dtype="float32")
layers.assign(a_logits_npdata, a_logits_tensor)

b_logits_npdata = np.array([-0.102,-0.112], dtype="float32")
b_logits_tensor = layers.create_tensor(dtype="float32")
layers.assign(b_logits_npdata, b_logits_tensor)

a = Categorical(a_logits_tensor)
b = Categorical(b_logits_tensor)

a.entropy()
# [0.6931472] with shape: [1]

b.entropy()
# [0.6931347] with shape: [1]

a.kl_divergence(b)
# [1.2516975e-05] with shape: [1]
kl_divergence(other)

相对于另一个类别分布的KL散度

参数:
  • other (Categorical) - 输入的另一个类别分布。数据类型为float32。

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

返回类型:Variable

entropy()

信息熵

返回:类别分布的信息熵, 数据类型为float32

返回类型:Variable