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.
+
+
- - -