沿 axis
计算张量 x
的累积 log-sum-exp。
用法
tf.math.cumulative_logsumexp(
x, axis=0, exclusive=False, reverse=False, name=None
)
参数
-
x
一个Tensor
。必须是以下类型之一:float16
,float32
,float64
。 -
axis
Tensor
类型为int32
或int64
(默认值:0)。必须在[-rank(x), rank(x))
范围内。 -
exclusive
如果是True
,则执行排他累积log-sum-exp。 -
reverse
如果True
,则在相反方向执行累积 log-sum-exp。 -
name
操作的名称(可选)。
返回
-
一个
Tensor
。具有与x
相同的形状和类型。
默认情况下,此操作执行包含累积log-sum-exp,这意味着输入的第一个元素与输出的第一个元素相同。
此操作在数值上比等效的 tensorflow 操作 tf.math.log(tf.math.cumsum(tf.math.exp(x)))
更加稳定,尽管在给定无限数值精度的情况下计算相同的结果。但是,请注意,在某些情况下,对于给定元素,它可能不如 tf.math.reduce_logsumexp
稳定,因为它以不同的方式应用“log-sum-exp 技巧”。
更准确地说,tf.math.reduce_logsumexp
使用以下技巧:
log(sum(exp(x))) == log(sum(exp(x - max(x)))) + max(x)
它不能在这里直接使用,因为没有快速的方法将它应用于每个前缀 x[:i]
。相反,此函数使用成对 log-add-exp 实现前缀扫描,这是一个可交换和关联(最高浮点精度)运算符:
log_add_exp(x, y) = log(exp(x) + exp(y))
= log(1 + exp(min(x, y) - max(x, y))) + max(x, y)
但是,使用上述运算符减少会导致不同的计算树(重复获取日志而不是仅在末尾),并且最大值仅是成对计算的,而不是在整个前缀上计算。通常,这会导致不同的且精度稍低的计算。
相关用法
- Python tf.math.cumprod用法及代码示例
- Python tf.math.cumsum用法及代码示例
- Python tf.math.conj用法及代码示例
- Python tf.math.count_nonzero用法及代码示例
- Python tf.math.confusion_matrix用法及代码示例
- Python tf.math.ceil用法及代码示例
- Python tf.math.cos用法及代码示例
- Python tf.math.cosh用法及代码示例
- Python tf.math.special.fresnel_cos用法及代码示例
- Python tf.math.polyval用法及代码示例
- Python tf.math.is_finite用法及代码示例
- Python tf.math.special.bessel_k0e用法及代码示例
- Python tf.math.acosh用法及代码示例
- Python tf.math.invert_permutation用法及代码示例
- Python tf.math.segment_prod用法及代码示例
- Python tf.math.bincount用法及代码示例
- Python tf.math.bessel_i0e用法及代码示例
- Python tf.math.unsorted_segment_min用法及代码示例
- Python tf.math.scalar_mul用法及代码示例
- Python tf.math.zero_fraction用法及代码示例
注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.math.cumulative_logsumexp。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。