From 810ba40dd2e046dbaeabee0953daa596a1824dbb Mon Sep 17 00:00:00 2001 From: yongqiangma Date: Wed, 9 Sep 2020 15:09:03 +0800 Subject: [PATCH] updata norm doc (#2440) updata norm doc --- doc/fluid/api/paddle/norm.rst | 2 +- doc/fluid/api/tensor/norm.rst | 11 ++-- .../api/paddle/tensor/linalg/norm_cn.rst | 54 +++++++++++++------ 3 files changed, 45 insertions(+), 22 deletions(-) diff --git a/doc/fluid/api/paddle/norm.rst b/doc/fluid/api/paddle/norm.rst index 954ff7394..7bff0a32b 100644 --- a/doc/fluid/api/paddle/norm.rst +++ b/doc/fluid/api/paddle/norm.rst @@ -2,6 +2,6 @@ norm ------------------------------- -:doc_source: paddle.fluid.layers.l2_normalize +:doc_source: paddle.tensor.norm diff --git a/doc/fluid/api/tensor/norm.rst b/doc/fluid/api/tensor/norm.rst index 7cb4ddd41..453ea0b63 100644 --- a/doc/fluid/api/tensor/norm.rst +++ b/doc/fluid/api/tensor/norm.rst @@ -1,7 +1,10 @@ -.. _api_tensor_cn_norm: +.. THIS FILE IS GENERATED BY `gen_doc.{py|sh}` + !DO NOT EDIT THIS FILE MANUALLY! -norm -------------------------------- -:doc_source: paddle.fluid.layers.l2_normalize +.. _api_tensor_linalg_norm: +norm +------------ +.. autofunction:: paddle.tensor.linalg.norm + :noindex: diff --git a/doc/paddle/api/paddle/tensor/linalg/norm_cn.rst b/doc/paddle/api/paddle/tensor/linalg/norm_cn.rst index ea6ebd82d..0e21c1993 100644 --- a/doc/paddle/api/paddle/tensor/linalg/norm_cn.rst +++ b/doc/paddle/api/paddle/tensor/linalg/norm_cn.rst @@ -3,7 +3,7 @@ norm ------------------------------- -.. py:function:: paddle.norm(input, p='fro', axis=None, keepdim=False, out=None, name=None): +.. py:function:: paddle.norm(x, p='fro', axis=None, keepdim=False, name=None): :alias_main: paddle.norm :alias: paddle.norm,paddle.tensor.norm,paddle.tensor.linalg.norm @@ -13,31 +13,51 @@ norm 该OP将计算给定Tensor的矩阵范数(Frobenius 范数)和向量范数(向量1范数、2范数、或者通常的p范数). 参数: - - **input** (Variable) - 输入Tensor。维度为多维,数据类型为float32或float64。 - - **p** (float|string, 可选) - 范数的种类。目前支持的值为 `fro`、 `1`、 `2`,和任何正实数p对应的p范数。 - - **axis** (int|list, 可选) - 使用范数计算的轴。如果 ``axis`` 为int或者只有一个元素的list,``norm`` API会计算输入Tensor的向量范数。如果axis为包含两个元素的list,API会计算输入Tensor的矩阵范数。 当 ``axis < 0`` 时,实际的计算维度为 rank(input) + axis。 + - **x** (Tensor) - 输入Tensor。维度为多维,数据类型为float32或float64。 + - **p** (float|string, 可选) - 范数(ord)的种类。目前支持的值为 `fro`、`inf`、`-inf`、`0`、`1`、`2`,和任何正实数p对应的p范数。默认值为 `fro` 。 + - **axis** (int|list|tuple, 可选) - 使用范数计算的轴。如果 ``axis`` 为None,则忽略input的维度,将其当做向量来计算。如果 ``axis`` 为int或者只有一个元素的list|tuple,``norm`` API会计算输入Tensor的向量范数。如果axis为包含两个元素的list,API会计算输入Tensor的矩阵范数。 当 ``axis < 0`` 时,实际的计算维度为 rank(input) + axis。默认值为 `None` 。 - **keepdim** (bool,可选) - 是否在输出的Tensor中保留和输入一样的维度,默认值为False。当 :attr:`keepdim` 为False时,输出的Tensor会比输入 :attr:`input` 的维度少一些。 - - **out** (Variable,可选) - 指定输出的Tensor,默认值为None。out的数据类型必须与输入 ``input`` 一致。 - **name** (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。默认值为None。 - 返回:在指定axis上进行范数计算的Tensor,与输入input数据类型相同。 - - 返回类型:Variable,与输入input数据类型相同。 - -抛出异常: - - ``TypeError`` - 当输出 ``out`` 和输入 ``input`` 数据类型不一致时候。 - - ``ValueError`` - 当参数 ``p`` 或者 ``axis`` 不合法时。 +返回: + - 在指定axis上进行范数计算的Tensor,与输入input数据类型相同。 **代码示例**: .. code-block:: python import paddle - import paddle.fluid as fluid - x = fluid.data(name='x', shape=[2, 3, 5], dtype='float64') - + import numpy as np + paddle.disable_static() + shape=[2, 3, 4] + np_input = np.arange(24).astype('float32') - 12 + np_input = np_input.reshape(shape) + x = paddle.to_tensor(np_input) + #[[[-12. -11. -10. -9.] [ -8. -7. -6. -5.] [ -4. -3. -2. -1.]] + # [[ 0. 1. 2. 3.] [ 4. 5. 6. 7.] [ 8. 9. 10. 11.]]] + # compute frobenius norm along last two dimensions. - out_fro = paddle.norm(x, p='fro', axis=[1,2]) - + out_fro = paddle.norm(x, p='fro', axis=[0,1]) + # out_fro.numpy() [17.435596 16.911535 16.7332 16.911535] + # compute 2-order vector norm along last dimension. out_pnorm = paddle.norm(x, p=2, axis=-1) + #out_pnorm.numpy(): [[21.118711 13.190906 5.477226] + # [ 3.7416575 11.224972 19.131126]] + + # compute 2-order norm along [0,1] dimension. + out_pnorm = paddle.norm(x, p=2, axis=[0,1]) + #out_pnorm.numpy(): [17.435596 16.911535 16.7332 16.911535] + + # compute inf-order norm + out_pnorm = paddle.norm(x, p=np.inf) + #out_pnorm.numpy() = [12.] + out_pnorm = paddle.norm(x, p=np.inf, axis=0) + #out_pnorm.numpy(): [[12. 11. 10. 9.] [8. 7. 6. 7.] [8. 9. 10. 11.]] + + # compute -inf-order norm + out_pnorm = paddle.norm(x, p=-np.inf) + #out_pnorm.numpy(): [0.] + out_pnorm = paddle.norm(x, p=-np.inf, axis=0) + #out_pnorm.numpy(): [[0. 1. 2. 3.] [4. 5. 6. 5.] [4. 3. 2. 1.]] + -- GitLab