diff --git a/tensorflow/g3doc/api_docs/python/functions_and_classes/shard1/tf.reduce_logsumexp.md b/tensorflow/g3doc/api_docs/python/functions_and_classes/shard1/tf.reduce_logsumexp.md new file mode 100644 index 00000000000..29c3c1c0fe9 --- /dev/null +++ b/tensorflow/g3doc/api_docs/python/functions_and_classes/shard1/tf.reduce_logsumexp.md @@ -0,0 +1,41 @@ +### `tf.reduce_logsumexp(input_tensor, reduction_indices=None, keep_dims=False, name=None)` {#reduce_logsumexp} + +Computes log(sum(exp(elements across dimensions of a tensor))). + +Reduces `input_tensor` along the dimensions given in `reduction_indices`. +Unless `keep_dims` is true, the rank of the tensor is reduced by 1 for each +entry in `reduction_indices`. If `keep_dims` is true, the reduced dimensions +are retained with length 1. + +If `reduction_indices` has no entries, all dimensions are reduced, and a +tensor with a single element is returned. + +This funciton is more numerically stable than log(sum(exp(input))). It avoids +overflows caused by taking the exp of large inputs and underflows caused by +taking the log of small inputs. + +For example: + +```python +# 'x' is [[0, 0, 0]] +# [0, 0, 0]] +tf.reduce_logsumexp(x) ==> log(6) +tf.reduce_logsumexp(x, 0) ==> [log(2), log(2), log(2)] +tf.reduce_logsumexp(x, 1) ==> [log(3), log(3)] +tf.reduce_logsumexp(x, 1, keep_dims=True) ==> [[log(3)], [log(3)]] +tf.reduce_logsumexp(x, [0, 1]) ==> log(6) +``` + +##### Args: + + +* `input_tensor`: The tensor to reduce. Should have numeric type. +* `reduction_indices`: The dimensions to reduce. If `None` (the defaut), + reduces all dimensions. +* `keep_dims`: If true, retains reduced dimensions with length 1. +* `name`: A name for the operation (optional). + +##### Returns: + + The reduced tensor. + diff --git a/tensorflow/g3doc/api_docs/python/index.md b/tensorflow/g3doc/api_docs/python/index.md index 74ae9b05575..b760c5ab1d4 100644 --- a/tensorflow/g3doc/api_docs/python/index.md +++ b/tensorflow/g3doc/api_docs/python/index.md @@ -239,6 +239,7 @@ * [`real`](../../api_docs/python/math_ops.md#real) * [`reduce_all`](../../api_docs/python/math_ops.md#reduce_all) * [`reduce_any`](../../api_docs/python/math_ops.md#reduce_any) + * [`reduce_logsumexp`](../../api_docs/python/math_ops.md#reduce_logsumexp) * [`reduce_max`](../../api_docs/python/math_ops.md#reduce_max) * [`reduce_mean`](../../api_docs/python/math_ops.md#reduce_mean) * [`reduce_min`](../../api_docs/python/math_ops.md#reduce_min) diff --git a/tensorflow/g3doc/api_docs/python/math_ops.md b/tensorflow/g3doc/api_docs/python/math_ops.md index 906e5073ca6..5131493f751 100644 --- a/tensorflow/g3doc/api_docs/python/math_ops.md +++ b/tensorflow/g3doc/api_docs/python/math_ops.md @@ -2667,6 +2667,50 @@ tf.reduce_any(x, 1) ==> [True, False] The reduced tensor. +- - - + +### `tf.reduce_logsumexp(input_tensor, reduction_indices=None, keep_dims=False, name=None)` {#reduce_logsumexp} + +Computes log(sum(exp(elements across dimensions of a tensor))). + +Reduces `input_tensor` along the dimensions given in `reduction_indices`. +Unless `keep_dims` is true, the rank of the tensor is reduced by 1 for each +entry in `reduction_indices`. If `keep_dims` is true, the reduced dimensions +are retained with length 1. + +If `reduction_indices` has no entries, all dimensions are reduced, and a +tensor with a single element is returned. + +This funciton is more numerically stable than log(sum(exp(input))). It avoids +overflows caused by taking the exp of large inputs and underflows caused by +taking the log of small inputs. + +For example: + +```python +# 'x' is [[0, 0, 0]] +# [0, 0, 0]] +tf.reduce_logsumexp(x) ==> log(6) +tf.reduce_logsumexp(x, 0) ==> [log(2), log(2), log(2)] +tf.reduce_logsumexp(x, 1) ==> [log(3), log(3)] +tf.reduce_logsumexp(x, 1, keep_dims=True) ==> [[log(3)], [log(3)]] +tf.reduce_logsumexp(x, [0, 1]) ==> log(6) +``` + +##### Args: + + +* `input_tensor`: The tensor to reduce. Should have numeric type. +* `reduction_indices`: The dimensions to reduce. If `None` (the defaut), + reduces all dimensions. +* `keep_dims`: If true, retains reduced dimensions with length 1. +* `name`: A name for the operation (optional). + +##### Returns: + + The reduced tensor. + + - - -