分类分布。
继承自:Distribution
用法
tf.compat.v1.distributions.Categorical(
logits=None, probs=None, dtype=tf.dtypes.int32, validate_args=False,
allow_nan_stats=True, name='Categorical'
)
参数
-
logits
一个 N-DTensor
,N >= 1
,表示一组分类分布的对数概率。第一个N - 1
维度索引到一批独立分布,最后一个维度表示每个类的 logits 向量。只应传入logits
或probs
之一。 -
probs
N-DTensor
,N >= 1
,表示一组分类分布的概率。第一个N - 1
维度索引成一批独立分布,最后一个维度表示每个类的概率向量。只应传入logits
或probs
之一。 -
dtype
事件样本的类型(默认值:int32)。 -
validate_args
Pythonbool
,默认False
。尽管可能会降低运行时性能,但检查True
分发参数的有效性时。当False
无效输入可能会默默呈现不正确的输出。 -
allow_nan_stats
Pythonbool
,默认True
。当True
时,统计信息(例如,均值、众数、方差)使用值“NaN
”来指示结果未定义。当False
时,如果一个或多个统计数据的批处理成员未定义,则会引发异常。 -
name
Pythonstr
名称以此类创建的 Ops 为前缀。
属性
-
allow_nan_stats
Pythonbool
说明未定义统计信息时的行为。统计数据在有意义时返回 +/- 无穷大。例如,柯西分布的方差是无穷大的。但是,有时统计数据是未定义的,例如,如果分布的 pdf 在分布的支持范围内没有达到最大值,则模式是未定义的。如果均值未定义,则根据定义,方差未定义。例如: df = 1 的 Student's T 的平均值是未定义的(没有明确的方式说它是 + 或 - 无穷大),因此方差 = E[(X - mean)**2] 也是未定义的。
-
batch_shape
来自单个事件索引的单个样本的形状作为TensorShape
.可能部分定义或未知。
批次维度是该分布的独立、不同参数化的索引。
-
dtype
Tensor
的DType
由此Distribution
处理。 -
event_shape
单个批次的单个样品的形状作为TensorShape
.可能部分定义或未知。
-
event_size
标量int32
张量:类的数量。 -
logits
坐标逻辑的向量。 -
name
此Distribution
创建的所有操作前的名称。 -
parameters
用于实例化此Distribution
的参数字典。 -
probs
坐标概率向量。 -
reparameterization_type
说明如何重新参数化分布中的样本。目前这是静态实例
distributions.FULLY_REPARAMETERIZED
或distributions.NOT_REPARAMETERIZED
之一。 -
validate_args
Pythonbool
表示启用了可能昂贵的检查。
分类分布由一组K
类的概率或log-probabilities 参数化。它是在整数 {0, 1, ..., K}
上定义的。
分类分布与OneHotCategorical
和Multinomial
分布密切相关。分类分布可以直观地理解为根据 argmax{ OneHotCategorical(probs) }
本身与 argmax{ Multinomial(probs, total_count=1) }
相同来生成样本。
数学细节
概率质量函数 (pmf) 是,
pmf(k; pi) = prod_j pi_j**[k == j]
陷阱
类数 K
不得超过:
self.dtype
可表示的最大整数,即2**(mantissa_bits+1)
(IEEE 754),- 最大
Tensor
索引,即2**31-1
。
换一种说法,
K <= min(2**31-1, {
tf.float16:2**11,
tf.float32:2**24,
tf.float64:2**53 }[param.dtype])
注意:此条件仅在 self.validate_args = True
时有效。
例子
创建一个 3 类分布,其中 2 类最有可能。
dist = Categorical(probs=[0.1, 0.5, 0.4])
n = 1e4
empirical_prob = tf.cast(
tf.histogram_fixed_width(
dist.sample(int(n)),
[0., 2],
nbins=3),
dtype=tf.float32) / n
# ==> array([ 0.1005, 0.5037, 0.3958], dtype=float32)
创建一个 3 类分布,其中 2 类最有可能。由 logits 而不是概率参数化。
dist = Categorical(logits=np.log([0.1, 0.5, 0.4])
n = 1e4
empirical_prob = tf.cast(
tf.histogram_fixed_width(
dist.sample(int(n)),
[0., 2],
nbins=3),
dtype=tf.float32) / n
# ==> array([0.1045, 0.5047, 0.3908], dtype=float32)
创建一个 3 类分布,其中 3 类最有可能。分布函数可以根据计数进行评估。
# counts is a scalar.
p = [0.1, 0.4, 0.5]
dist = Categorical(probs=p)
dist.prob(0) # Shape []
# p will be broadcast to [[0.1, 0.4, 0.5], [0.1, 0.4, 0.5]] to match counts.
counts = [1, 0]
dist.prob(counts) # Shape [2]
# p will be broadcast to shape [3, 5, 7, 3] to match counts.
counts = [[...]] # Shape [5, 7, 3]
dist.prob(counts) # Shape [5, 7, 3]
相关用法
- Python tf.compat.v1.distributions.Categorical.stddev用法及代码示例
- Python tf.compat.v1.distributions.Categorical.variance用法及代码示例
- Python tf.compat.v1.distributions.Categorical.cdf用法及代码示例
- Python tf.compat.v1.distributions.Categorical.covariance用法及代码示例
- Python tf.compat.v1.distributions.Categorical.log_cdf用法及代码示例
- Python tf.compat.v1.distributions.Categorical.cross_entropy用法及代码示例
- Python tf.compat.v1.distributions.Categorical.log_survival_function用法及代码示例
- Python tf.compat.v1.distributions.Categorical.survival_function用法及代码示例
- Python tf.compat.v1.distributions.Categorical.kl_divergence用法及代码示例
- Python tf.compat.v1.distributions.Categorical.quantile用法及代码示例
- Python tf.compat.v1.distributions.Multinomial.stddev用法及代码示例
- Python tf.compat.v1.distributions.Bernoulli.cross_entropy用法及代码示例
- Python tf.compat.v1.distributions.Bernoulli.covariance用法及代码示例
- Python tf.compat.v1.distributions.Normal.log_survival_function用法及代码示例
- Python tf.compat.v1.distributions.Laplace.stddev用法及代码示例
- Python tf.compat.v1.distributions.Multinomial.quantile用法及代码示例
- Python tf.compat.v1.distributions.Uniform.log_survival_function用法及代码示例
- Python tf.compat.v1.distributions.Gamma.cdf用法及代码示例
- Python tf.compat.v1.distributions.Normal.log_cdf用法及代码示例
- Python tf.compat.v1.distributions.Gamma.log_cdf用法及代码示例
注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.compat.v1.distributions.Categorical。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。