沿 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。