From 6f50f5517f97112a172ec962416cba1e6b06ecee Mon Sep 17 00:00:00 2001 From: Kaedeharai Date: Fri, 29 Dec 2023 16:29:42 +0800 Subject: [PATCH 1/4] [Docathon][Add CN Doc No.32] --- docs/api/paddle/sparse/nn/SubmConv2D_cn.rst | 96 +++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 docs/api/paddle/sparse/nn/SubmConv2D_cn.rst diff --git a/docs/api/paddle/sparse/nn/SubmConv2D_cn.rst b/docs/api/paddle/sparse/nn/SubmConv2D_cn.rst new file mode 100644 index 00000000000..0c0ff486614 --- /dev/null +++ b/docs/api/paddle/sparse/nn/SubmConv2D_cn.rst @@ -0,0 +1,96 @@ +.. _cn_api_paddle_sparse_nn_SubmConv2D: + +SubmConv2D +------------------------------- + +.. py:class:: class paddle.sparse.nn.SubmConv2D(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, padding_mode='zeros', key=None, weight_attr=None, bias_attr=None, data_format='NHWC') + +**子流形稀疏二维卷积层** + +子流形稀疏卷积 2d 层(submanifold sparse convolution2d layer)根据输入计算输出,卷积核和步长、填充、空洞大小(dilations)、组参数。 +输入(input)和输出(Output)是多维的稀疏张量(Sparse Coo Tensor), +形状为:math:[N,H,W,C]其中 N 是批量大小,C 是通道,H 是特征的高度,W 是特征的宽度。 +如果提供了偏见归因,偏置被添加到卷积的输出。 +对于每一个输入 :math:`X`,方程是: + +.. math:: + Out = W \ast X + b + +其中: + + - :math:`X`: 输入值, NDHWC 格式的张量。 + - :math:`W`: 卷积核值, NDHWC 格式的张量。 + - :math:`\\ast`: 子流形卷积运算, 参考论文: https://arxiv.org/abs/1706.01307. + - :math:`b`: 偏置值, 形状为[M]的一维张量. + - :math:`Out`: 输出值, :math:`Out` 和 :math:`X` 的形状可能不同. + +参数 +:::::::::::: + + - **in_channels**(int): - 输入图像中的输入通道数。 + - **out_channels**(int): - 卷积产生的输出通道数。 + - **kernel_size**(int|list|tuple): - 卷积核的大小。 + 可以为单个整数或包含三个整数的元组或列表,分别表示卷积核的深度,高和宽。如果为单个整数,表示卷积核的深度,高和宽都等于该整数。 + - **stride**(int|list|tuple, 可选): - 步幅大小。如果 stride 是一个列表/元组,它必须包含两个整数,(stride_H, stride_W). + 否则, stride_H = stride_W = stride。默认值为 1. + - **padding**(int|str|tuple|list, 可选): - 填充大小。应为以下几种格式之一。 + + 1. 如果它是一个字符串,可以是 "VALID" 或者 "SAME",计算细节可参考上述 ``padding`` = "SAME" 或 ``padding`` = "VALID" 时的计算公式。 + 2. 如果它是一个整数, 则代表它每个 Spartial 维度(depth, height, width) 被 `padding` 的大小填充为零。 + 3. 一个 list[int] 或 tuple[int],其长度是 Spartial 维度的数目,它包含每个 Spartial 维度每侧的填充量。它的形式为 [pad_d1, pad_d2, ...]。 + 4. 一个 list[int] 或 tuple[int],其长度为 2 * 部分维数。对于所有局部维度,它的形式为 [pad_before, pad_after, pad_before, pad_after, ...]。 + 5. 一个整数对的列表或元组。它的形式为 [[pad_before, pad_after], [pad_before, pad_after], ...]。 + + 请注意,批维度和通道维度也包括在内。每对整数对应于输入维度的填充量。批维度和通道维度中的填充应为[0, 0]或者是(0, 0)默认值为 0。 + - **dilation**(int|list|tuple, 可选): - 空洞大小。如果 dilation 是列表或元组, 则它必须包含两个整数 (dilation_H, dilation_W)。 + 否则, dilation_H = dilation_W = dilation。默认值为 1。 + - **groups**(int, 可选): - 二维卷积层的组号。根据 Alex Krizhevsky 的 Deep CNN 论文中的分组卷积: + 当 group = 2 时, 滤波器的前半部分仅连接到输入通道的前半部分, 而滤波器的后半部分仅连接到输入通道的后半部分。默认值为 1。 + - **padding_mode**(str, 可选): - ``'zeros'``, ``'reflect'``, ``'replicate'`` 或 ``'circular'``。 目前仅支持 ``'zeros'``。 + - **key**(str, 可选): - key 用于保存或使用相同的规则手册,规则手册的定义和作用是指 + https://pdfs.semanticscholar.org/5125/a16039cabc6320c908a4764f32596e018ad3.pdf. The + 默认值为 None。 + - **weight_attr**(ParamAttr, 可选): - conv2d 的可学习参数/权重的参数属性。 + 如果设置为 None 或 ParamAttr 的一个属性,则 conv2d 将创建 ParamAttr 作为 param_attr。 如果设置为 None, 则参数初始化为 + :math:`Normal(0.0, std)`, 并且 :math:`std` 是 + :math:`(\frac{2.0 }{filter\_elem\_num})^{0.5}`, + 默认值为 None。 + - **bias_attr**(ParamAttr|bool, 可选): - conv2d 偏差的参数属性。如果设置为 False, 则不会向输出单位添加任何偏置。 + 如果设置为 None 或 ParamAttr 的一个属性,则 conv2d 将创建 ParamAttr 作为 bias_attr。如果未设置 bias_attr 的初始值设定项,则偏置初始化为零。 + 默认值为 None。 + - **data_format**(str, 可选): 指定输入布局的数据格式。它可以是 "NCHW" 或 "NHWC"。目前仅支持 "NHWC"。 + +属性 +:::::::::::: + +weight +''''''''' +该层滤波器的可学习权重,类型为 ``Parameter``。 + +bias +''''''''' +本层的可学习偏置,类型为 ``Parameter``。 + +形状 +:::::::::::: + + - x: :math:`(N, H_{in}, W_{in}, C_{in})` + + - 权重: :math:`(K_{h}, K_{w}, C_{in}, C_{out})` + + - 偏置: :math:`(C_{out})` + + - 输出: :math:`(N, H_{out}, W_{out}, C_{out})` + + 其中 + + .. math:: + + H_{out}&= \frac{(H_{in} + 2 * paddings[0] - (dilations[0] * (kernel\_size[0] - 1) + 1))}{strides[0]} + 1 + + W_{out}&= \frac{(W_{in} + 2 * paddings[1] - (dilations[1] * (kernel\_size[1] - 1) + 1))}{strides[1]} + 1 + +代码示例 +:::::::::::: + +COPY-FROM: paddle.sparse.nn.SubmConv2D From fa9dc1afb0b02554d84e031ff846ac6422a8a963 Mon Sep 17 00:00:00 2001 From: Kaedeharai Date: Fri, 29 Dec 2023 20:08:16 +0800 Subject: [PATCH 2/4] [Docathon][Add CN Doc No.32] --- docs/api/paddle/sparse/Overview_cn.rst | 1 + docs/api/paddle/sparse/nn/SubmConv2D_cn.rst | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/api/paddle/sparse/Overview_cn.rst b/docs/api/paddle/sparse/Overview_cn.rst index 47ceb1f41d4..0f3e4303ecd 100644 --- a/docs/api/paddle/sparse/Overview_cn.rst +++ b/docs/api/paddle/sparse/Overview_cn.rst @@ -77,6 +77,7 @@ paddle.sparse 目录包含飞桨框架支持稀疏数据存储和计算相关的 " :ref:`paddle.sparse.nn.BatchNorm` ", " Batch Normalization 层" " :ref:`paddle.sparse.nn.SyncBatchNorm` ", " Synchronized Batch Normalization 层" " :ref:`paddle.sparse.nn.MaxPool3D` ", "三维最大池化层" + " :ref:`paddle.sparse.nn.SubmConv2D ` ", "子流形二维卷积层" .. _about_sparse_nn_functional: diff --git a/docs/api/paddle/sparse/nn/SubmConv2D_cn.rst b/docs/api/paddle/sparse/nn/SubmConv2D_cn.rst index 0c0ff486614..a614b024f6a 100644 --- a/docs/api/paddle/sparse/nn/SubmConv2D_cn.rst +++ b/docs/api/paddle/sparse/nn/SubmConv2D_cn.rst @@ -3,7 +3,7 @@ SubmConv2D ------------------------------- -.. py:class:: class paddle.sparse.nn.SubmConv2D(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, padding_mode='zeros', key=None, weight_attr=None, bias_attr=None, data_format='NHWC') +.. py:class:: paddle.sparse.nn.SubmConv2D(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, padding_mode='zeros', key=None, weight_attr=None, bias_attr=None, data_format='NHWC') **子流形稀疏二维卷积层** From 413e713c053bef076b21cce9becd031f92436dcd Mon Sep 17 00:00:00 2001 From: Kaedeharai Date: Thu, 18 Jan 2024 19:28:32 +0800 Subject: [PATCH 3/4] modified: docs/api/paddle/sparse/nn/SubmConv2D_cn.rst --- docs/api/paddle/sparse/nn/SubmConv2D_cn.rst | 24 ++++++++++----------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/api/paddle/sparse/nn/SubmConv2D_cn.rst b/docs/api/paddle/sparse/nn/SubmConv2D_cn.rst index a614b024f6a..2c597b9bb8b 100644 --- a/docs/api/paddle/sparse/nn/SubmConv2D_cn.rst +++ b/docs/api/paddle/sparse/nn/SubmConv2D_cn.rst @@ -7,10 +7,10 @@ SubmConv2D **子流形稀疏二维卷积层** -子流形稀疏卷积 2d 层(submanifold sparse convolution2d layer)根据输入计算输出,卷积核和步长、填充、空洞大小(dilations)、组参数。 +子流形稀疏二维卷积层(submanifold sparse convolution2d layer)根据输入计算输出,卷积核和步长、填充、空洞大小(dilations)一组参数。 输入(input)和输出(Output)是多维的稀疏张量(Sparse Coo Tensor), -形状为:math:[N,H,W,C]其中 N 是批量大小,C 是通道,H 是特征的高度,W 是特征的宽度。 -如果提供了偏见归因,偏置被添加到卷积的输出。 +形状为:math:[N,H,W,C]其中 N 是批尺寸,C 是通道,H 是特征高度,W 是特征宽度。 +如果提供了 bias_attr,则添加偏置项到卷积的输出。 对于每一个输入 :math:`X`,方程是: .. math:: @@ -20,9 +20,9 @@ SubmConv2D - :math:`X`: 输入值, NDHWC 格式的张量。 - :math:`W`: 卷积核值, NDHWC 格式的张量。 - - :math:`\\ast`: 子流形卷积运算, 参考论文: https://arxiv.org/abs/1706.01307. - - :math:`b`: 偏置值, 形状为[M]的一维张量. - - :math:`Out`: 输出值, :math:`Out` 和 :math:`X` 的形状可能不同. + - :math:`\\ast`: 子流形卷积运算, 参考论文: https://arxiv.org/abs/1706.01307。 + - :math:`b`: 偏置值, 形状为[M]的一维张量。 + - :math:`Out`: 输出值, :math:`Out` 和 :math:`X` 的形状可能不同。 参数 :::::::::::: @@ -31,8 +31,8 @@ SubmConv2D - **out_channels**(int): - 卷积产生的输出通道数。 - **kernel_size**(int|list|tuple): - 卷积核的大小。 可以为单个整数或包含三个整数的元组或列表,分别表示卷积核的深度,高和宽。如果为单个整数,表示卷积核的深度,高和宽都等于该整数。 - - **stride**(int|list|tuple, 可选): - 步幅大小。如果 stride 是一个列表/元组,它必须包含两个整数,(stride_H, stride_W). - 否则, stride_H = stride_W = stride。默认值为 1. + - **stride**(int|list|tuple, 可选): - 步长大小。如果 stride 是一个列表/元组,它必须包含两个整数,(stride_H, stride_W)。 + 否则, stride_H = stride_W = stride。默认值为 1。 - **padding**(int|str|tuple|list, 可选): - 填充大小。应为以下几种格式之一。 1. 如果它是一个字符串,可以是 "VALID" 或者 "SAME",计算细节可参考上述 ``padding`` = "SAME" 或 ``padding`` = "VALID" 时的计算公式。 @@ -45,10 +45,10 @@ SubmConv2D - **dilation**(int|list|tuple, 可选): - 空洞大小。如果 dilation 是列表或元组, 则它必须包含两个整数 (dilation_H, dilation_W)。 否则, dilation_H = dilation_W = dilation。默认值为 1。 - **groups**(int, 可选): - 二维卷积层的组号。根据 Alex Krizhevsky 的 Deep CNN 论文中的分组卷积: - 当 group = 2 时, 滤波器的前半部分仅连接到输入通道的前半部分, 而滤波器的后半部分仅连接到输入通道的后半部分。默认值为 1。 + 当 group = 2 时, 卷积核的前半部分仅连接到输入通道的前半部分, 而卷积核的后半部分仅连接到输入通道的后半部分。默认值为 1。 - **padding_mode**(str, 可选): - ``'zeros'``, ``'reflect'``, ``'replicate'`` 或 ``'circular'``。 目前仅支持 ``'zeros'``。 - **key**(str, 可选): - key 用于保存或使用相同的规则手册,规则手册的定义和作用是指 - https://pdfs.semanticscholar.org/5125/a16039cabc6320c908a4764f32596e018ad3.pdf. The + https://pdfs.semanticscholar.org/5125/a16039cabc6320c908a4764f32596e018ad3.pdf。 默认值为 None。 - **weight_attr**(ParamAttr, 可选): - conv2d 的可学习参数/权重的参数属性。 如果设置为 None 或 ParamAttr 的一个属性,则 conv2d 将创建 ParamAttr 作为 param_attr。 如果设置为 None, 则参数初始化为 @@ -65,11 +65,11 @@ SubmConv2D weight ''''''''' -该层滤波器的可学习权重,类型为 ``Parameter``。 +该层卷积核的可学习权重,类型为 ``Parameter``。 bias ''''''''' -本层的可学习偏置,类型为 ``Parameter``。 +该层的可学习偏置,类型为 ``Parameter``。 形状 :::::::::::: From 4f789bd0f7842a8f06c1c7b0f09ad6b1696d569b Mon Sep 17 00:00:00 2001 From: Kaedeharai Date: Fri, 19 Jan 2024 14:57:14 +0800 Subject: [PATCH 4/4] modified: docs/api/paddle/sparse/nn/SubmConv2D_cn.rst --- docs/api/paddle/sparse/nn/SubmConv2D_cn.rst | 65 ++++++++------------- 1 file changed, 25 insertions(+), 40 deletions(-) diff --git a/docs/api/paddle/sparse/nn/SubmConv2D_cn.rst b/docs/api/paddle/sparse/nn/SubmConv2D_cn.rst index 2c597b9bb8b..596dd7fb4cd 100644 --- a/docs/api/paddle/sparse/nn/SubmConv2D_cn.rst +++ b/docs/api/paddle/sparse/nn/SubmConv2D_cn.rst @@ -9,7 +9,7 @@ SubmConv2D 子流形稀疏二维卷积层(submanifold sparse convolution2d layer)根据输入计算输出,卷积核和步长、填充、空洞大小(dilations)一组参数。 输入(input)和输出(Output)是多维的稀疏张量(Sparse Coo Tensor), -形状为:math:[N,H,W,C]其中 N 是批尺寸,C 是通道,H 是特征高度,W 是特征宽度。 +形状为 :math:[N,H,W,C] 其中 N 是批尺寸,C 是通道,H 是特征高度,W 是特征宽度。 如果提供了 bias_attr,则添加偏置项到卷积的输出。 对于每一个输入 :math:`X`,方程是: @@ -18,47 +18,35 @@ SubmConv2D 其中: - - :math:`X`: 输入值, NDHWC 格式的张量。 - - :math:`W`: 卷积核值, NDHWC 格式的张量。 + - :math:`X`: 输入值, NDHWC 格式的 Tencer。 + - :math:`W`: 卷积核值, NDHWC 格式的 Tencer。 - :math:`\\ast`: 子流形卷积运算, 参考论文: https://arxiv.org/abs/1706.01307。 - - :math:`b`: 偏置值, 形状为[M]的一维张量。 + - :math:`b`: 偏置值, 形状为[M]的 1-D Tencer。 - :math:`Out`: 输出值, :math:`Out` 和 :math:`X` 的形状可能不同。 参数 :::::::::::: - - **in_channels**(int): - 输入图像中的输入通道数。 - - **out_channels**(int): - 卷积产生的输出通道数。 - - **kernel_size**(int|list|tuple): - 卷积核的大小。 - 可以为单个整数或包含三个整数的元组或列表,分别表示卷积核的深度,高和宽。如果为单个整数,表示卷积核的深度,高和宽都等于该整数。 - - **stride**(int|list|tuple, 可选): - 步长大小。如果 stride 是一个列表/元组,它必须包含两个整数,(stride_H, stride_W)。 - 否则, stride_H = stride_W = stride。默认值为 1。 - - **padding**(int|str|tuple|list, 可选): - 填充大小。应为以下几种格式之一。 - - 1. 如果它是一个字符串,可以是 "VALID" 或者 "SAME",计算细节可参考上述 ``padding`` = "SAME" 或 ``padding`` = "VALID" 时的计算公式。 - 2. 如果它是一个整数, 则代表它每个 Spartial 维度(depth, height, width) 被 `padding` 的大小填充为零。 - 3. 一个 list[int] 或 tuple[int],其长度是 Spartial 维度的数目,它包含每个 Spartial 维度每侧的填充量。它的形式为 [pad_d1, pad_d2, ...]。 - 4. 一个 list[int] 或 tuple[int],其长度为 2 * 部分维数。对于所有局部维度,它的形式为 [pad_before, pad_after, pad_before, pad_after, ...]。 - 5. 一个整数对的列表或元组。它的形式为 [[pad_before, pad_after], [pad_before, pad_after], ...]。 - - 请注意,批维度和通道维度也包括在内。每对整数对应于输入维度的填充量。批维度和通道维度中的填充应为[0, 0]或者是(0, 0)默认值为 0。 - - **dilation**(int|list|tuple, 可选): - 空洞大小。如果 dilation 是列表或元组, 则它必须包含两个整数 (dilation_H, dilation_W)。 - 否则, dilation_H = dilation_W = dilation。默认值为 1。 - - **groups**(int, 可选): - 二维卷积层的组号。根据 Alex Krizhevsky 的 Deep CNN 论文中的分组卷积: - 当 group = 2 时, 卷积核的前半部分仅连接到输入通道的前半部分, 而卷积核的后半部分仅连接到输入通道的后半部分。默认值为 1。 - - **padding_mode**(str, 可选): - ``'zeros'``, ``'reflect'``, ``'replicate'`` 或 ``'circular'``。 目前仅支持 ``'zeros'``。 - - **key**(str, 可选): - key 用于保存或使用相同的规则手册,规则手册的定义和作用是指 - https://pdfs.semanticscholar.org/5125/a16039cabc6320c908a4764f32596e018ad3.pdf。 - 默认值为 None。 - - **weight_attr**(ParamAttr, 可选): - conv2d 的可学习参数/权重的参数属性。 - 如果设置为 None 或 ParamAttr 的一个属性,则 conv2d 将创建 ParamAttr 作为 param_attr。 如果设置为 None, 则参数初始化为 - :math:`Normal(0.0, std)`, 并且 :math:`std` 是 - :math:`(\frac{2.0 }{filter\_elem\_num})^{0.5}`, - 默认值为 None。 - - **bias_attr**(ParamAttr|bool, 可选): - conv2d 偏差的参数属性。如果设置为 False, 则不会向输出单位添加任何偏置。 - 如果设置为 None 或 ParamAttr 的一个属性,则 conv2d 将创建 ParamAttr 作为 bias_attr。如果未设置 bias_attr 的初始值设定项,则偏置初始化为零。 - 默认值为 None。 - - **data_format**(str, 可选): 指定输入布局的数据格式。它可以是 "NCHW" 或 "NHWC"。目前仅支持 "NHWC"。 + - **in_channels** (int): - 输入图像的通道数。 + - **out_channels** (int): - 卷积操作产生的输出通道数。 + - **kernel_size** (int|list|tuple): - 卷积核的大小。可以为单个整数或包含三个整数的元组或列表,分别表示卷积核的深度,高和宽。如果为单个整数,表示卷积核的深度,高和宽都等于该整数。 + - **stride** (int|list|tuple, 可选): - 步长大小。如果 stride 是一个列表/元组,它必须包含两个整数,(stride_H, stride_W)。否则, stride_H = stride_W = stride。默认值为 1。 + - **padding** (int|str|tuple|list, 可选): - 填充大小。应为以下几种格式之一; + + - (1) 如果它是一个字符串,可以是 "VALID" 或者 "SAME",计算细节可参考上述 ``padding`` = "SAME" 或 ``padding`` = "VALID" 时的计算公式。 + - (2) 如果它是一个整数, 则代表它每个 Spartial 维度(depth, height, width) 被 `padding` 的大小填充为零。 + - (3) 一个 list[int] 或 tuple[int],其长度是 Spartial 维度的数目,它包含每个 Spartial 维度每侧的填充量。它的形式为 [pad_d1, pad_d2, ...]。 + - (4) 一个 list[int] 或 tuple[int],其长度为 2 * 部分维数。对于所有局部维度,它的形式为 [pad_before, pad_after, pad_before, pad_after, ...]。 + - (5) 一个整数对的列表或元组。它的形式为 [[pad_before, pad_after], [pad_before, pad_after], ...]。 + + 请注意,批维度和通道维度也包括在内。每对整数对应于输入维度的填充量。批维度和通道维度中的填充应为[0, 0]或者是(0, 0)默认值为 0。 + - **dilation** (int|list|tuple, 可选): - 空洞大小。如果 dilation 是列表或元组, 则它必须包含两个整数 (dilation_H, dilation_W)。否则, dilation_H = dilation_W = dilation。默认值为 1。 + - **groups** (int, 可选): - 二维卷积层的组号。根据 Alex Krizhevsky 的 Deep CNN 论文中的分组卷积:当 group = 2 时, 卷积核的前半部分仅连接到输入通道的前半部分, 而卷积核的后半部分仅连接到输入通道的后半部分。默认值为 1。 + - **padding_mode** (str, 可选): - ``'zeros'``, ``'reflect'``, ``'replicate'`` 或 ``'circular'``。 目前仅支持 ``'zeros'``。 + - **key** (str, 可选): - key 用于保存或使用相同的规则手册,规则手册的定义和作用是指 https://pdfs.semanticscholar.org/5125/a16039cabc6320c908a4764f32596e018ad3.pdf。默认值为 None。 + - **weight_attr** (ParamAttr, 可选): - conv2d 的可学习参数/权重的参数属性。如果设置为 None 或 ParamAttr 的一个属性,则 conv2d 将创建 ParamAttr 作为 param_attr。 如果设置为 None, 则参数初始化为:math:`Normal(0.0, std)`, 并且 :math:`std` 是:math:`(\frac{2.0 }{filter\_elem\_num})^{0.5}`,默认值为 None。 + - **bias_attr** (ParamAttr|bool, 可选): - conv2d 偏差的参数属性。如果设置为 False, 则不会向输出单位添加任何偏置。如果设置为 None 或 ParamAttr 的一个属性,则 conv2d 将创建 ParamAttr 作为 bias_attr。如果未设置 bias_attr 的初始值设定项,则偏置初始化为零。默认值为 None。 + - **data_format** (str, 可选): 指定输入布局的数据格式。它可以是 "NCHW" 或 "NHWC"。目前仅支持 "NHWC"。 属性 :::::::::::: @@ -74,12 +62,9 @@ bias 形状 :::::::::::: - - x: :math:`(N, H_{in}, W_{in}, C_{in})` - + - 输入: :math:`(N, H_{in}, W_{in}, C_{in})` - 权重: :math:`(K_{h}, K_{w}, C_{in}, C_{out})` - - 偏置: :math:`(C_{out})` - - 输出: :math:`(N, H_{out}, W_{out}, C_{out})` 其中