logsumexp_cn.rst 1.9 KB
Newer Older
1 2
.. _cn_api_paddle_tensor_math_logsumexp:

T
tianshuo78520a 已提交
3 4
logsumexp
-------------------------------
5

6
.. py:function:: paddle.tensor.math.logsumexp(x, dim=None, keepdim=False, out=None, name=None)
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

该OP对输入Tensor的元素以e为底做指数运算,然后根据指定维度做求和之后取自然对数

.. math::
   logsumexp(x) = \log\sum exp(x)

参数:
          - **x** (Variable)- 输入变量为多维Tensor或LoDTensor,支持数据类型为float32,float64
          - **dim** (list | int ,可选)- 求和运算的维度。如果为None,则计算所有元素的和并返回包含单个元素的Tensor变量,否则必须在  :math:`[−rank(input),rank(input)]` 范围内。如果 :math:`dim [i] <0` ,则维度将变为 :math:`rank+dim[i]` ,默认值为None。
          - **keep_dim** (bool)- 是否在输出Tensor中保留减小的维度。如 keep_dim 为true,否则结果张量的维度将比输入张量小,默认值为False。
          - **out** (Variable , 可选)- 显示指定的输出变量
          - **name** (str , 可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。

返回:  Tensor,数据类型和输入数据类型一致。

返回类型:Variable

**代码示例1**

..  code-block:: python

    import paddle
    import paddle.fluid as fluid
    import numpy as np

    with fluid.dygraph.guard():
      np_x = np.random.uniform(0.1, 1, [10]).astype(np.float32)
      x = fluid.dygraph.to_variable(np_x)
35
      print(paddle.logsumexp(x).numpy())
36 37 38 39 40 41 42 43 44 45 46 47

**代码示例2**

..  code-block:: python

    import paddle
    import paddle.fluid as fluid
    import numpy as np

    with fluid.dygraph.guard():
        np_x = np.random.uniform(0.1, 1, [2, 3, 4]).astype(np.float32)
        x = fluid.dygraph.to_variable(np_x)
48 49
        print(paddle.logsumexp(x, dim=1).numpy())
        print(paddle.logsumexp(x, dim=[0, 2]).numpy())