From 1b442adf1842499b8289f4acffed0127e0b56cef Mon Sep 17 00:00:00 2001 From: zhang wenhui Date: Thu, 27 Aug 2020 23:10:58 +0800 Subject: [PATCH] Norm cn 20 (#2492) * fix AdamOptimizer, test=develop, test=document_fix * fix AdamOptimizer, test=develop, test=document_fix * fix AdamOptimizer, test=develop, test=document_fix * fix AdamOptimizer, test=develop, test=document_fix * fix python code * fix norm api cn, test=develop * fix norm api cn, test=develop * fix norm api cn, test=develop * fix norm api cn, test=develop * fix norm api cn, test=develop * fix norm api cn, test=develop --- doc/fluid/api_cn/nn_cn.rst | 6 ++ doc/fluid/api_cn/nn_cn/BatchNorm1d_cn.rst | 74 +++++++++++++++++++ doc/fluid/api_cn/nn_cn/BatchNorm2d_cn.rst | 74 +++++++++++++++++++ doc/fluid/api_cn/nn_cn/BatchNorm3d_cn.rst | 74 +++++++++++++++++++ doc/fluid/api_cn/nn_cn/GroupNorm_cn.rst | 38 +++++++++- doc/fluid/api_cn/nn_cn/InstanceNorm1d_cn.rst | 60 +++++++++++++++ doc/fluid/api_cn/nn_cn/InstanceNorm2d_cn.rst | 60 +++++++++++++++ doc/fluid/api_cn/nn_cn/InstanceNorm3d_cn.rst | 58 +++++++++++++++ doc/fluid/api_cn/nn_cn/LayerNorm_cn.rst | 51 ++++++++++++- doc/fluid/api_cn/nn_cn/functional_cn.rst | 3 + .../nn_cn/functional_cn/batch_norm_cn.rst | 47 ++++++++++++ .../nn_cn/functional_cn/instance_norm_cn.rst | 47 ++++++++++++ .../nn_cn/functional_cn/layer_norm_cn.rst | 37 ++++++++++ 13 files changed, 625 insertions(+), 4 deletions(-) create mode 100644 doc/fluid/api_cn/nn_cn/BatchNorm1d_cn.rst create mode 100644 doc/fluid/api_cn/nn_cn/BatchNorm2d_cn.rst create mode 100644 doc/fluid/api_cn/nn_cn/BatchNorm3d_cn.rst create mode 100644 doc/fluid/api_cn/nn_cn/InstanceNorm1d_cn.rst create mode 100644 doc/fluid/api_cn/nn_cn/InstanceNorm2d_cn.rst create mode 100644 doc/fluid/api_cn/nn_cn/InstanceNorm3d_cn.rst create mode 100644 doc/fluid/api_cn/nn_cn/functional_cn/batch_norm_cn.rst create mode 100644 doc/fluid/api_cn/nn_cn/functional_cn/instance_norm_cn.rst create mode 100644 doc/fluid/api_cn/nn_cn/functional_cn/layer_norm_cn.rst diff --git a/doc/fluid/api_cn/nn_cn.rst b/doc/fluid/api_cn/nn_cn.rst index 42bf3e750..bf3dc98f8 100644 --- a/doc/fluid/api_cn/nn_cn.rst +++ b/doc/fluid/api_cn/nn_cn.rst @@ -28,6 +28,9 @@ paddle.nn nn_cn/anchor_generator_cn.rst nn_cn/assign_cn.rst nn_cn/BatchNorm_cn.rst + nn_cn/BatchNorm1d_cn.rst + nn_cn/BatchNorm2d_cn.rst + nn_cn/BatchNorm3d_cn.rst nn_cn/SyncBatchNorm_cn.rst nn_cn/beam_search_cn.rst nn_cn/beam_search_decode_cn.rst @@ -89,6 +92,9 @@ paddle.nn nn_cn/huber_loss_cn.rst nn_cn/image_resize_cn.rst nn_cn/image_resize_short_cn.rst + nn_cn/InstanceNorm1d_cn.rst + nn_cn/InstanceNorm2d_cn.rst + nn_cn/InstanceNorm3d_cn.rst nn_cn/inverse_time_decay_cn.rst nn_cn/iou_similarity_cn.rst nn_cn/kldiv_loss_cn.rst diff --git a/doc/fluid/api_cn/nn_cn/BatchNorm1d_cn.rst b/doc/fluid/api_cn/nn_cn/BatchNorm1d_cn.rst new file mode 100644 index 000000000..3d62b0d1f --- /dev/null +++ b/doc/fluid/api_cn/nn_cn/BatchNorm1d_cn.rst @@ -0,0 +1,74 @@ +.. _cn_api_nn_BatchNorm1d: + +BatchNorm1d +------------------------------- + +.. py:class:: paddle.nn.BatchNorm1d(num_features, momentum=0.9, epsilon=1e-05, weight_attr=None, bias_attr=None, data_format='NCL', track_running_stats=True, name=None): + + +该接口用于构建 ``BatchNorm1d`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。可以处理2D或者3D的Tensor, 实现了批归一化层(Batch Normalization Layer)的功能,可用作卷积和全连接操作的批归一化函数,根据当前批次数据按通道计算的均值和方差进行归一化。更多详情请参考 : `Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift `_ + +当训练时 :math:`\mu_{\beta}` 和 :math:`\sigma_{\beta}^{2}` 是minibatch的统计数据。计算公式如下: + +.. math:: + \mu_{\beta} &\gets \frac{1}{m} \sum_{i=1}^{m} x_i \quad &// mini-batch-mean \\ + \sigma_{\beta}^{2} &\gets \frac{1}{m} \sum_{i=1}^{m}(x_i - \mu_{\beta})^2 \quad &// mini-batch-variance \\ + +- :math:`x` : 批输入数据 +- :math:`m` : 当前批次数据的大小 + +当预测时,track_running_stats = True :math:`\mu_{\beta}` 和 :math:`\sigma_{\beta}^{2}` 是全局(或运行)统计数据(moving_mean和moving_variance),通常来自预先训练好的模型。计算公式如下: + +.. math:: + + moving\_mean = moving\_mean * momentum + \mu_{\beta} * (1. - momentum) \quad &// global mean \\ + moving\_variance = moving\_variance * momentum + \sigma_{\beta}^{2} * (1. - momentum) \quad &// global variance \\ + +归一化函数公式如下: + +.. math:: + + \hat{x_i} &\gets \frac{x_i - \mu_\beta} {\sqrt{\sigma_{\beta}^{2} + \epsilon}} \quad &// normalize \\ + y_i &\gets \gamma \hat{x_i} + \beta \quad &// scale-and-shift \\ + +- :math:`\epsilon` : 添加较小的值到方差中以防止除零 +- :math:`\gamma` : 可训练的比例参数 +- :math:`\beta` : 可训练的偏差参数 + +参数: + - **num_features** (int) - 指明输入 ``Tensor`` 的通道数量。 + - **epsilon** (float, 可选) - 为了数值稳定加在分母上的值。默认值:1e-05。 + - **momentum** (float, 可选) - 此值用于计算 ``moving_mean`` 和 ``moving_var`` 。默认值:0.9。更新公式如上所示。 + - **weight_attr** (ParamAttr|bool, 可选) - 指定权重参数属性的对象。如果为False, 则表示每个通道的伸缩固定为1,不可改变。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_ParamAttr` 。 + - **bias_attr** (ParamAttr, 可选) - 指定偏置参数属性的对象。如果为False, 则表示每一个通道的偏移固定为0,不可改变。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_ParamAttr` 。 + - **data_format** (string, 可选) - 指定输入数据格式,数据格式可以为“NC"或者"NCL"。默认值:“NCL”。 + - **track_running_stats** (bool, 可选) – 指示是否使用全局均值和方差。在训练时,设置为True表示在训练期间将保存全局均值和方差用于推理。推理时此属性只能设置为True。默认值:True。 + - **name** (string, 可选) – BatchNorm的名称, 默认值为None。更多信息请参见 :ref:`api_guide_Name` 。 + + +返回:无 + +形状: + - input: 形状为(批大小,通道数)的2-D Tensor 或(批大小, 通道数,长度)的3-D Tensor。 + - output: 和输入形状一样。 + +.. note:: +目前训练时设置track_running_stats为False是无效的,实际还是会按照True的方案保存全局均值和方差。之后的版本会修复此问题。 + + +**代码示例** + +.. code-block:: python + + import paddle + import numpy as np + + paddle.disable_static() + np.random.seed(123) + x_data = np.random.random(size=(2, 1, 3)).astype('float32') + x = paddle.to_tensor(x_data) + batch_norm = paddle.nn.BatchNorm1d(1) + batch_norm_out = batch_norm(x) + + print(batch_norm_out.numpy) + diff --git a/doc/fluid/api_cn/nn_cn/BatchNorm2d_cn.rst b/doc/fluid/api_cn/nn_cn/BatchNorm2d_cn.rst new file mode 100644 index 000000000..38fad62b9 --- /dev/null +++ b/doc/fluid/api_cn/nn_cn/BatchNorm2d_cn.rst @@ -0,0 +1,74 @@ +.. _cn_api_nn_BatchNorm2d: + +BatchNorm2d +------------------------------- + +.. py:class:: paddle.nn.BatchNorm2d(num_features, momentum=0.9, epsilon=1e-05, weight_attr=None, bias_attr=None, data_format='NCHW', track_running_stats=True, name=None): + + +该接口用于构建 ``BatchNorm2d`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。可以处理4D的Tensor, 实现了批归一化层(Batch Normalization Layer)的功能,可用作卷积和全连接操作的批归一化函数,根据当前批次数据按通道计算的均值和方差进行归一化。更多详情请参考 : `Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift `_ + +当训练时 :math:`\mu_{\beta}` 和 :math:`\sigma_{\beta}^{2}` 是minibatch的统计数据。计算公式如下: + +.. math:: + \mu_{\beta} &\gets \frac{1}{m} \sum_{i=1}^{m} x_i \quad &// mini-batch-mean \\ + \sigma_{\beta}^{2} &\gets \frac{1}{m} \sum_{i=1}^{m}(x_i - \mu_{\beta})^2 \quad &// mini-batch-variance \\ + +- :math:`x` : 批输入数据 +- :math:`m` : 当前批次数据的大小 + +当预测时,track_running_stats = True :math:`\mu_{\beta}` 和 :math:`\sigma_{\beta}^{2}` 是全局(或运行)统计数据(moving_mean和moving_variance),通常来自预先训练好的模型。计算公式如下: + +.. math:: + + moving\_mean = moving\_mean * momentum + \mu_{\beta} * (1. - momentum) \quad &// global mean \\ + moving\_variance = moving\_variance * momentum + \sigma_{\beta}^{2} * (1. - momentum) \quad &// global variance \\ + +归一化函数公式如下: + +.. math:: + + \hat{x_i} &\gets \frac{x_i - \mu_\beta} {\sqrt{\sigma_{\beta}^{2} + \epsilon}} \quad &// normalize \\ + y_i &\gets \gamma \hat{x_i} + \beta \quad &// scale-and-shift \\ + +- :math:`\epsilon` : 添加较小的值到方差中以防止除零 +- :math:`\gamma` : 可训练的比例参数 +- :math:`\beta` : 可训练的偏差参数 + +参数: + - **num_features** (int) - 指明输入 ``Tensor`` 的通道数量。 + - **epsilon** (float, 可选) - 为了数值稳定加在分母上的值。默认值:1e-05。 + - **momentum** (float, 可选) - 此值用于计算 ``moving_mean`` 和 ``moving_var`` 。默认值:0.9。更新公式如上所示。 + - **weight_attr** (ParamAttr|bool, 可选) - 指定权重参数属性的对象。如果为False, 则表示每个通道的伸缩固定为1,不可改变。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_ParamAttr` 。 + - **bias_attr** (ParamAttr, 可选) - 指定偏置参数属性的对象。如果为False, 则表示每一个通道的偏移固定为0,不可改变。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_ParamAttr` 。 + - **data_format** (string, 可选) - 指定输入数据格式,数据格式可以为“NCWH"或者"NCHW"。默认值:“NCHW”。 + - **track_running_stats** (bool, 可选) – 指示是否使用全局均值和方差。在训练时,设置为True表示在训练期间将保存全局均值和方差用于推理。推理时此属性只能设置为True。默认值:True。 + - **name** (string, 可选) – BatchNorm的名称, 默认值为None。更多信息请参见 :ref:`api_guide_Name` 。 + + +返回:无 + +形状: + - input: 形状为(批大小,通道数, 高度,宽度)的4-D Tensor 或(批大小, 通道数,宽度,高度)的4-D Tensor。 + - output: 和输入形状一样。 + +.. note:: +目前训练时设置track_running_stats为False是无效的,实际还是会按照True的方案保存全局均值和方差。之后的版本会修复此问题。 + + +**代码示例** + +.. code-block:: python + + import paddle + import numpy as np + + paddle.disable_static() + np.random.seed(123) + x_data = np.random.random(size=(2, 1, 2, 3)).astype('float32') + x = paddle.to_tensor(x_data) + batch_norm = paddle.nn.BatchNorm2d(1) + batch_norm_out = batch_norm(x) + + print(batch_norm_out.numpy) + diff --git a/doc/fluid/api_cn/nn_cn/BatchNorm3d_cn.rst b/doc/fluid/api_cn/nn_cn/BatchNorm3d_cn.rst new file mode 100644 index 000000000..9121aa9d9 --- /dev/null +++ b/doc/fluid/api_cn/nn_cn/BatchNorm3d_cn.rst @@ -0,0 +1,74 @@ +.. _cn_api_nn_BatchNorm3d: + +BatchNorm3d +------------------------------- + +.. py:class:: paddle.nn.BatchNorm3d(num_features, momentum=0.9, epsilon=1e-05, weight_attr=None, bias_attr=None, data_format='NCDHW', track_running_stats=True, name=None): + + +该接口用于构建 ``BatchNorm3d`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。可以处理4D的Tensor, 实现了批归一化层(Batch Normalization Layer)的功能,可用作卷积和全连接操作的批归一化函数,根据当前批次数据按通道计算的均值和方差进行归一化。更多详情请参考 : `Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift `_ + +当训练时 :math:`\mu_{\beta}` 和 :math:`\sigma_{\beta}^{2}` 是minibatch的统计数据。计算公式如下: + +.. math:: + \mu_{\beta} &\gets \frac{1}{m} \sum_{i=1}^{m} x_i \quad &// mini-batch-mean \\ + \sigma_{\beta}^{2} &\gets \frac{1}{m} \sum_{i=1}^{m}(x_i - \mu_{\beta})^2 \quad &// mini-batch-variance \\ + +- :math:`x` : 批输入数据 +- :math:`m` : 当前批次数据的大小 + +当预测时,track_running_stats = True :math:`\mu_{\beta}` 和 :math:`\sigma_{\beta}^{2}` 是全局(或运行)统计数据(moving_mean和moving_variance),通常来自预先训练好的模型。计算公式如下: + +.. math:: + + moving\_mean = moving\_mean * momentum + \mu_{\beta} * (1. - momentum) \quad &// global mean \\ + moving\_variance = moving\_variance * momentum + \sigma_{\beta}^{2} * (1. - momentum) \quad &// global variance \\ + +归一化函数公式如下: + +.. math:: + + \hat{x_i} &\gets \frac{x_i - \mu_\beta} {\sqrt{\sigma_{\beta}^{2} + \epsilon}} \quad &// normalize \\ + y_i &\gets \gamma \hat{x_i} + \beta \quad &// scale-and-shift \\ + +- :math:`\epsilon` : 添加较小的值到方差中以防止除零 +- :math:`\gamma` : 可训练的比例参数 +- :math:`\beta` : 可训练的偏差参数 + +参数: + - **num_features** (int) - 指明输入 ``Tensor`` 的通道数量。 + - **epsilon** (float, 可选) - 为了数值稳定加在分母上的值。默认值:1e-05。 + - **momentum** (float, 可选) - 此值用于计算 ``moving_mean`` 和 ``moving_var`` 。默认值:0.9。更新公式如上所示。 + - **weight_attr** (ParamAttr|bool, 可选) - 指定权重参数属性的对象。如果为False, 则表示每个通道的伸缩固定为1,不可改变。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_ParamAttr` 。 + - **bias_attr** (ParamAttr, 可选) - 指定偏置参数属性的对象。如果为False, 则表示每一个通道的偏移固定为0,不可改变。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_ParamAttr` 。 + - **data_format** (string, 可选) - 指定输入数据格式,数据格式可以为“NCDHW"。默认值:“NCDHW”。 + - **track_running_stats** (bool, 可选) – 指示是否使用全局均值和方差。在训练时,设置为True表示在训练期间将保存全局均值和方差用于推理。推理时此属性只能设置为True。默认值:True。 + - **name** (string, 可选) – BatchNorm的名称, 默认值为None。更多信息请参见 :ref:`api_guide_Name` 。 + + +返回:无 + +形状: + - input: 形状为(批大小,通道数, 维度,高度,宽度)的5-D Tensor。 + - output: 和输入形状一样。 + +.. note:: +目前训练时设置track_running_stats为False是无效的,实际还是会按照True的方案保存全局均值和方差。之后的版本会修复此问题。 + + +**代码示例** + +.. code-block:: python + + import paddle + import numpy as np + + paddle.disable_static() + np.random.seed(123) + x_data = np.random.random(size=(2, 1, 2, 2, 3)).astype('float32') + x = paddle.to_tensor(x_data) + batch_norm = paddle.nn.BatchNorm3d(1) + batch_norm_out = batch_norm(x) + + print(batch_norm_out.numpy) + diff --git a/doc/fluid/api_cn/nn_cn/GroupNorm_cn.rst b/doc/fluid/api_cn/nn_cn/GroupNorm_cn.rst index 198259d63..9cc2625e8 100644 --- a/doc/fluid/api_cn/nn_cn/GroupNorm_cn.rst +++ b/doc/fluid/api_cn/nn_cn/GroupNorm_cn.rst @@ -1,7 +1,41 @@ -.. _cn_api_nn_cn_GroupNorm: +.. _cn_api_nn_GroupNorm: GroupNorm ------------------------------- -:doc_source: paddle.fluid.dygraph.GroupNorm +.. py:class:: paddle.nn.GroupNorm(num_channels, num_groups, epsilon=1e-05, weight_attr=None, bias_attr=None, data_layout='NCHW, 'name=None) +**Group Normalization层** + +该接口用于构建 ``GroupNorm`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了组归一化层的功能。更多详情请参考: `Group Normalization `_ 。 + +参数: + - **num_channels** (int) - 输入的通道数。 + - **num_groups** (int) - 从通道中分离出来的 ``group`` 的数目。 + - **epsilon** (float, 可选) - 为防止方差除零,增加一个很小的值。默认值:1e-05。 + - **weight_attr** (ParamAttr|bool, 可选) - 指定权重参数属性的对象。如果为False, 表示参数不学习。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 + - **bias_attr** (ParamAttr|bool, 可选) - 指定偏置参数属性的对象。如果为False, 表示参数不学习。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 + - **data_format** (string, 可选) - 只支持“NCHW”(num_batches,channels,height,width)格式。默认值:“NCHW”。 + - **name** (string, 可选) – GroupNorm的名称, 默认值为None。更多信息请参见 :ref:`api_guide_Name` 。 + +返回:无 + +形状: + - input: 形状为(批大小,通道数, 高度,宽度)的4-D Tensor。 + - output: 和输入形状一样。 + +**代码示例** + +.. code-block:: python + + import paddle + import numpy as np + + paddle.disable_static() + np.random.seed(123) + x_data = np.random.random(size=(2, 6, 2, 2)).astype('float32') + x = paddle.to_tensor(x_data) + group_norm = paddle.nn.GroupNorm(num_channels=3, num_groups=6) + group_norm_out = group_norm(x) + + print(group_norm_out.numpy) diff --git a/doc/fluid/api_cn/nn_cn/InstanceNorm1d_cn.rst b/doc/fluid/api_cn/nn_cn/InstanceNorm1d_cn.rst new file mode 100644 index 000000000..3dac14df3 --- /dev/null +++ b/doc/fluid/api_cn/nn_cn/InstanceNorm1d_cn.rst @@ -0,0 +1,60 @@ +.. _cn_api_nn_InstanceNorm1d: + +InstanceNorm1d +------------------------------- + +.. py:class:: paddle.nn.InstanceNorm1d(num_features, epsilon=1e-05, momentum=0.9, weight_attr=None, bias_attr=None, track_running_stats=True, data_format="NCL", name=None): + + +该接口用于构建 ``InstanceNorm1d`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。可以处理2D或者3D的Tensor, 实现了实例归一化层(Instance Normalization Layer)的功能。更多详情请参考 : Instance Normalization: The Missing Ingredient for Fast Stylization . + +``input`` 是mini-batch的输入。 + +.. math:: + \mu_{\beta} &\gets \frac{1}{m} \sum_{i=1}^{m} x_i \quad &// mean \\ + \sigma_{\beta}^{2} &\gets \frac{1}{m} \sum_{i=1}^{m}(x_i - \mu_{\beta})^2 \quad &// variance \\ + \hat{x_i} &\gets \frac{x_i - \mu_\beta} {\sqrt{\sigma_{\beta}^{2} + \epsilon}} \quad &// normalize \\ + y_i &\gets \gamma \hat{x_i} + \beta \quad &// scale-and-shift + + +Note: + `H` 是高度, `W` 是宽度. + + +参数: + - **num_features** (int) - 指明输入 ``Tensor`` 的通道数量。 + - **epsilon** (float, 可选) - 为了数值稳定加在分母上的值。默认值:1e-05。 + - **momentum** (float, 可选) - 此值用于计算 ``moving_mean`` 和 ``moving_var`` 。默认值:0.9。更新公式如上所示。 + - **weight_attr** (ParamAttr|bool, 可选) - 指定权重参数属性的对象。如果为False, 则表示每个通道的伸缩固定为1,不可改变。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_ParamAttr` 。 + - **bias_attr** (ParamAttr, 可选) - 指定偏置参数属性的对象。如果为False, 则表示每一个通道的偏移固定为0,不可改变。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_ParamAttr` 。 + - **track_running_stats** (bool, 可选) – 指示是否使用全局均值和方差。在训练时,设置为True表示在训练期间将保存全局均值和方差用于推理。推理时此属性只能设置为True。默认值:True。 + - **data_format** (string, 可选) - 指定输入数据格式,数据格式可以为“NC"或者"NCL"。默认值:“NCL”。 + - **name** (string, 可选) – InstanceNorm的名称, 默认值为None。更多信息请参见 :ref:`api_guide_Name` 。 + + +返回:无 + +形状: + - input: 形状为(批大小,通道数)的2-D Tensor 或(批大小, 通道数,长度)的3-D Tensor。 + - output: 和输入形状一样。 + +.. note:: +目前设置track_running_stats和momentum是无效的。之后的版本会修复此问题。 + + +**代码示例** + +.. code-block:: python + + import paddle + import numpy as np + + paddle.disable_static() + np.random.seed(123) + x_data = np.random.random(size=(2, 2, 3)).astype('float32') + x = paddle.to_tensor(x_data) + instance_norm = paddle.nn.InstanceNorm1d(2) + instance_norm_out = instance_norm(x) + + print(instance_norm_out.numpy) + diff --git a/doc/fluid/api_cn/nn_cn/InstanceNorm2d_cn.rst b/doc/fluid/api_cn/nn_cn/InstanceNorm2d_cn.rst new file mode 100644 index 000000000..6bcd5a061 --- /dev/null +++ b/doc/fluid/api_cn/nn_cn/InstanceNorm2d_cn.rst @@ -0,0 +1,60 @@ +.. _cn_api_nn_cn_InstanceNorm2d: + +InstanceNorm2d +------------------------------- + +.. py:class:: paddle.nn.InstanceNorm2d(num_features, epsilon=1e-05, momentum=0.9, weight_attr=None, bias_attr=None, track_running_stats=True, data_format="NCHW", name=None): + + +该接口用于构建 ``InstanceNorm2d`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。可以处理2D或者3D的Tensor, 实现了实例归一化层(Instance Normalization Layer)的功能。更多详情请参考 : Instance Normalization: The Missing Ingredient for Fast Stylization . + +``input`` 是mini-batch的输入。 + +.. math:: + \mu_{\beta} &\gets \frac{1}{m} \sum_{i=1}^{m} x_i \quad &// mean \\ + \sigma_{\beta}^{2} &\gets \frac{1}{m} \sum_{i=1}^{m}(x_i - \mu_{\beta})^2 \quad &// variance \\ + \hat{x_i} &\gets \frac{x_i - \mu_\beta} {\sqrt{\sigma_{\beta}^{2} + \epsilon}} \quad &// normalize \\ + y_i &\gets \gamma \hat{x_i} + \beta \quad &// scale-and-shift + +Note: + `H` 是高度, `W` 是宽度. + + +参数: + - **num_features** (int) - 指明输入 ``Tensor`` 的通道数量。 + - **epsilon** (float, 可选) - 为了数值稳定加在分母上的值。默认值:1e-05。 + - **momentum** (float, 可选) - 此值用于计算 ``moving_mean`` 和 ``moving_var`` 。默认值:0.9。更新公式如上所示。 + - **weight_attr** (ParamAttr|bool, 可选) - 指定权重参数属性的对象。如果为False, 则表示每个通道的伸缩固定为1,不可改变。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_ParamAttr` 。 + - **bias_attr** (ParamAttr, 可选) - 指定偏置参数属性的对象。如果为False, 则表示每一个通道的偏移固定为0,不可改变。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_ParamAttr` 。 + - **track_running_stats** (bool, 可选) – 指示是否使用全局均值和方差。在训练时,设置为True表示在训练期间将保存全局均值和方差用于推理。推理时此属性只能设置为True。默认值:True。 + - **data_format** (string, 可选) - 指定输入数据格式,数据格式可以为“NCHW"。默认值:“NCHW”。 + - **name** (string, 可选) – InstanceNorm的名称, 默认值为None。更多信息请参见 :ref:`api_guide_Name` 。 + + +返回:无 + +形状: + - input: 形状为(批大小,通道数,高度,宽度)的4-D Tensor。 + - output: 和输入形状一样。 + +.. note:: +目前设置track_running_stats和momentum是无效的。之后的版本会修复此问题。 + + +**代码示例** + +.. code-block:: python + + import paddle + import numpy as np + + paddle.disable_static() + np.random.seed(123) + x_data = np.random.random(size=(2, 2, 2, 3)).astype('float32') + x = paddle.to_tensor(x_data) + instance_norm = paddle.nn.InstanceNorm2d(2) + instance_norm_out = instance_norm(x) + + print(instance_norm_out.numpy) + + diff --git a/doc/fluid/api_cn/nn_cn/InstanceNorm3d_cn.rst b/doc/fluid/api_cn/nn_cn/InstanceNorm3d_cn.rst new file mode 100644 index 000000000..c953cdc67 --- /dev/null +++ b/doc/fluid/api_cn/nn_cn/InstanceNorm3d_cn.rst @@ -0,0 +1,58 @@ +.. _cn_api_nn_cn_InstanceNorm3d: + +InstanceNorm3d +------------------------------- + +.. py:class:: paddle.nn.InstanceNorm3d(num_features, epsilon=1e-05, momentum=0.9, weight_attr=None, bias_attr=None, track_running_stats=True, data_format="NCDHW", name=None): + +该接口用于构建 ``InstanceNorm3d`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。可以处理5D的Tensor, 实现了实例归一化层(Instance Normalization Layer)的功能。更多详情请参考 : Instance Normalization: The Missing Ingredient for Fast Stylization . + +``input`` 是mini-batch的输入。 + +.. math:: + \mu_{\beta} &\gets \frac{1}{m} \sum_{i=1}^{m} x_i \quad &// mean \\ + \sigma_{\beta}^{2} &\gets \frac{1}{m} \sum_{i=1}^{m}(x_i - \mu_{\beta})^2 \quad &// variance \\ + \hat{x_i} &\gets \frac{x_i - \mu_\beta} {\sqrt{\sigma_{\beta}^{2} + \epsilon}} \quad &// normalize \\ + y_i &\gets \gamma \hat{x_i} + \beta \quad &// scale-and-shift + +Note: + `H` 是高度, `W` 是宽度. + + +参数: + - **num_features** (int) - 指明输入 ``Tensor`` 的通道数量。 + - **epsilon** (float, 可选) - 为了数值稳定加在分母上的值。默认值:1e-05。 + - **momentum** (float, 可选) - 此值用于计算 ``moving_mean`` 和 ``moving_var`` 。默认值:0.9。更新公式如上所示。 + - **weight_attr** (ParamAttr|bool, 可选) - 指定权重参数属性的对象。如果为False, 则表示每个通道的伸缩固定为1,不可改变。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_ParamAttr` 。 + - **bias_attr** (ParamAttr, 可选) - 指定偏置参数属性的对象。如果为False, 则表示每一个通道的偏移固定为0,不可改变。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_ParamAttr` 。 + - **track_running_stats** (bool, 可选) – 指示是否使用全局均值和方差。在训练时,设置为True表示在训练期间将保存全局均值和方差用于推理。推理时此属性只能设置为True。默认值:True。 + - **data_format** (string, 可选) - 指定输入数据格式,数据格式可以为"NCDHW"。默认值:“NCDHW”。 + - **name** (string, 可选) – InstanceNorm的名称, 默认值为None。更多信息请参见 :ref:`api_guide_Name` 。 + + +返回:无 + +形状: + - input: 形状为5-D Tensor。 + - output: 和输入形状一样。 + +.. note:: +目前设置track_running_stats和momentum是无效的。之后的版本会修复此问题。 + + +**代码示例** + +.. code-block:: python + + import paddle + import numpy as np + + paddle.disable_static() + np.random.seed(123) + x_data = np.random.random(size=(2, 2, 2, 2, 3)).astype('float32') + x = paddle.to_tensor(x_data) + instance_norm = paddle.nn.InstanceNorm3d(2) + instance_norm_out = instance_norm(x) + + print(instance_norm_out.numpy) + diff --git a/doc/fluid/api_cn/nn_cn/LayerNorm_cn.rst b/doc/fluid/api_cn/nn_cn/LayerNorm_cn.rst index e1fa61a5b..837aabfcd 100644 --- a/doc/fluid/api_cn/nn_cn/LayerNorm_cn.rst +++ b/doc/fluid/api_cn/nn_cn/LayerNorm_cn.rst @@ -1,7 +1,54 @@ -.. _cn_api_nn_cn_LayerNorm: +.. _cn_api_nn_LayerNorm: LayerNorm ------------------------------- -:doc_source: paddle.fluid.dygraph.LayerNorm +.. py:class:: paddle.nn.LayerNorm(normalized_shape, epsilon=1e-05, weight_attr=None, bias_attr=None, name=None) + +该接口用于构建 ``LayerNorm`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了层归一化层(Layer Normalization Layer)的功能,其可以应用于小批量输入数据。更多详情请参考:`Layer Normalization `_ + +计算公式如下 + +.. math:: + \\\mu=\frac{1}{H}\sum_{i=1}^{H}x_i\\ + + \\\sigma=\sqrt{\frac{1}{H}\sum_i^H{(x_i-\mu)^2} + \epsilon}\\ + + \\y=f(\frac{g}{\sigma}(x-\mu) + b)\\ + +- :math:`x` : 该层神经元的向量表示 +- :math:`H` : 层中隐藏神经元个数 +- :math:`\epsilon` : 添加较小的值到方差中以防止除零 +- :math:`g` : 可训练的比例参数 +- :math:`b` : 可训练的偏差参数 + + +参数: + - **normalized_shape** (int 或 list 或 tuple) – 需规范化的shape,期望的输入shape为 ``[*, normalized_shape[0], normalized_shape[1], ..., normalized_shape[-1]]`` 。如果是单个整数,则此模块将在最后一个维度上规范化(此时最后一维的维度需与该参数相同)。 + - **epsilon** (float, 可选) - 指明在计算过程中是否添加较小的值到方差中以防止除零。默认值:1e-05。 + - **weight_attr** (ParamAttr|bool, 可选) - 指定权重参数属性的对象。如果为False固定为1,不进行学习。默认值为None, 表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 + - **bias_attr** (ParamAttr, 可选) - 指定偏置参数属性的对象。如果为False固定为0,不进行学习。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 + - **name** (string, 可选) – LayerNorm的名称, 默认值为None。更多信息请参见 :ref:`api_guide_Name` 。 + +返回:无 + +形状: + - input: 2-D, 3-D, 4-D或5D 的Tensor。 + - output: 和输入形状一样。 + +**代码示例** + +.. code-block:: python + + import paddle + import numpy as np + + paddle.disable_static() + np.random.seed(123) + x_data = np.random.random(size=(2, 2, 2, 3)).astype('float32') + x = paddle.to_tensor(x_data) + layer_norm = paddle.nn.LayerNorm(x_data.shape[1:]) + layer_norm_out = layer_norm(x) + + print(layer_norm_out.numpy) diff --git a/doc/fluid/api_cn/nn_cn/functional_cn.rst b/doc/fluid/api_cn/nn_cn/functional_cn.rst index b47f924b3..2ad594d67 100644 --- a/doc/fluid/api_cn/nn_cn/functional_cn.rst +++ b/doc/fluid/api_cn/nn_cn/functional_cn.rst @@ -12,6 +12,9 @@ functional functional_cn/l1_loss_cn.rst functional_cn/nll_loss_cn.rst functional_cn/normalize_cn.rst + functional_cn/batch_norm_cn.rst + functional_cn/instance_norm_cn.rst + functional_cn/layer_norm_cn.rst functional_cn/margin_ranking_loss_cn.rst functional_cn/mse_loss_cn.rst functional_cn/ctc_loss_cn.rst diff --git a/doc/fluid/api_cn/nn_cn/functional_cn/batch_norm_cn.rst b/doc/fluid/api_cn/nn_cn/functional_cn/batch_norm_cn.rst new file mode 100644 index 000000000..2da6d0db2 --- /dev/null +++ b/doc/fluid/api_cn/nn_cn/functional_cn/batch_norm_cn.rst @@ -0,0 +1,47 @@ +.. _cn_api_nn_functional_batch_norm: + +batch_norm +------------------------------- + +.. py:class:: paddle.nn.functional.batch_norm(x, running_mean, running_var, weight, bias, training=False, momentum=0.9, epsilon=1e-05, data_format='NCHW', name=None): + +推荐使用nn.BatchNorm1d,nn.BatchNorm2d, nn.BatchNorm3d,由内部调用此方法。 + +详情见 :ref:`cn_api_nn_BatchNorm1d` 。 + +参数: + - **x** (int) - 输入,数据类型为float32, float64。 + - **running_mean** (Tensor) - 均值的Tensor。 + - **running_var** (Tensor) - 方差的Tensor。 + - **weight** (Tensor) - 权重的Tensor。 + - **bias** (Tensor) - 偏置的Tensor。 + - **momentum** (float, 可选) - 此值用于计算 ``moving_mean`` 和 ``moving_var`` 。默认值:0.9。更新公式如上所示。 + - **epsilon** (float, 可选) - 为了数值稳定加在分母上的值。默认值:1e-05。 + - **data_format** (string, 可选) - 指定输入数据格式,数据格式可以为“NC", "NCL", "NCHW" 或者"NCDHW"。默认值:"NCHW"。 + - **name** (string, 可选) – BatchNorm的名称, 默认值为None。更多信息请参见 :ref:`api_guide_Name` 。 + + +返回:无 + + +**代码示例** + +.. code-block:: python + + import paddle + import numpy as np + + paddle.disable_static() + x = np.random.seed(123) + x = np.random.random(size=(2, 1, 2, 3)).astype('float32') + running_mean = np.random.random(size=1).astype('float32') + running_variance = np.random.random(size=1).astype('float32') + weight_data = np.random.random(size=1).astype('float32') + bias_data = np.random.random(size=1).astype('float32') + x = paddle.to_tensor(x) + rm = paddle.to_tensor(running_mean) + rv = paddle.to_tensor(running_variance) + w = paddle.to_tensor(weight_data) + b = paddle.to_tensor(bias_data) + batch_norm_out = paddle.nn.functional.batch_norm(x, rm, rv, w, b) + print(batch_norm_out) diff --git a/doc/fluid/api_cn/nn_cn/functional_cn/instance_norm_cn.rst b/doc/fluid/api_cn/nn_cn/functional_cn/instance_norm_cn.rst new file mode 100644 index 000000000..5114c49c7 --- /dev/null +++ b/doc/fluid/api_cn/nn_cn/functional_cn/instance_norm_cn.rst @@ -0,0 +1,47 @@ +.. cn_api_nn_functional_instance_norm: + +instance_norm +------------------------------- + +.. py:class:: paddle.nn.functional.instance_norm(x, running_mean, running_var, weight, bias, training=False, epsilon=1e-05, momentum=0.9, use_input_stats=True, data_format='NCHW', name=None): + +推荐使用nn.InstanceNorm1d,nn.InstanceNorm2d, nn.InstanceNorm3d,由内部调用此方法。 + +详情见 :ref:`cn_api_nn_InstanceNorm1d` 。 + +参数: + - **x** (int) - 输入,数据类型为float32, float64。 + - **running_mean** (Tensor) - 均值的Tensor。 + - **running_var** (Tensor) - 方差的Tensor。 + - **weight** (Tensor) - 权重的Tensor。 + - **bias** (Tensor) - 偏置的Tensor。 + - **epsilon** (float, 可选) - 为了数值稳定加在分母上的值。默认值:1e-05。 + - **momentum** (float, 可选) - 此值用于计算 ``moving_mean`` 和 ``moving_var`` 。默认值:0.9。更新公式如上所示。 + - **use_input_stats** (bool, 可选) - 默认是True. + - **data_format** (string, 可选) - 指定输入数据格式,数据格式可以为“NC", "NCL", "NCHW" 或者"NCDHW"。默认值:"NCHW"。 + - **name** (string, 可选) – InstanceNorm的名称, 默认值为None。更多信息请参见 :ref:`api_guide_Name` 。 + +返回:无 + + +**代码示例** + +.. code-block:: python + + import paddle + import numpy as np + + paddle.disable_static() + x = np.random.seed(123) + x = np.random.random(size=(2, 1, 2, 3)).astype('float32') + running_mean = np.random.random(size=1).astype('float32') + running_variance = np.random.random(size=1).astype('float32') + weight_data = np.random.random(size=1).astype('float32') + bias_data = np.random.random(size=1).astype('float32') + x = paddle.to_tensor(x) + rm = paddle.to_tensor(running_mean) + rv = paddle.to_tensor(running_variance) + w = paddle.to_tensor(weight_data) + b = paddle.to_tensor(bias_data) + instance_norm_out = paddle.nn.functional.instance_norm(x, rm, rv, w, b) + print(instance_norm_out) diff --git a/doc/fluid/api_cn/nn_cn/functional_cn/layer_norm_cn.rst b/doc/fluid/api_cn/nn_cn/functional_cn/layer_norm_cn.rst new file mode 100644 index 000000000..e8bd2d747 --- /dev/null +++ b/doc/fluid/api_cn/nn_cn/functional_cn/layer_norm_cn.rst @@ -0,0 +1,37 @@ +.. _cn_api_nn_functional_layer_norm: + +layer_norm +------------------------------- + +.. py:class:: paddle.nn.functional.layer_norm(x, normalized_shape, weight=None, bias=None, epsilon=1e-05, name=None): + +推荐使用nn.LayerNorm。 + +详情见 :ref:`cn_api_nn_LayerNorm` . + +参数: + - **x** (int) - 输入,数据类型为float32, float64。 + - **normalized_shape** (int|list|tuple) - 期望的输入是 :math:`[*, normalized_shape[0], normalized_shape[1], ..., normalized_shape[-1]]` ,如果是一个整数,会作用在最后一个维度。 + - **weight** (Tensor) - 权重的Tensor, 默认为None。 + - **bias** (Tensor) - 偏置的Tensor, 默认为None。 + - **epsilon** (float, 可选) - 为了数值稳定加在分母上的值。默认值:1e-05。 + - **name** (string, 可选) – LayerNorm的名称, 默认值为None。更多信息请参见 :ref:`api_guide_Name` 。 + + +返回:无 + +**代码示例** + +.. code-block:: python + + import paddle + import numpy as np + + paddle.disable_static() + np.random.seed(123) + x_data = np.random.random(size=(2, 2, 2, 3)).astype('float32') + x = paddle.to_tensor(x_data) + layer_norm_out = paddle.nn.functional.layer_norm(x, x.shape[1:]) + + print(layer_norm_out.numpy) + -- GitLab