Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Docathon][Add CN Doc No.24-25] #6360

Merged
merged 7 commits into from
Jan 19, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 83 additions & 0 deletions docs/api/paddle/sparse/nn/Conv2d_cn.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
.. _cn_api_paddle_sparse_nn_Conv2D:

Conv2D
-------------------------------

.. py:class:: paddle.sparse.nn.Conv2D(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, padding_mode='zeros', weight_attr=None, bias_attr=None, data_format="NHWC")

**稀疏二维卷积层**

二维稀疏卷积层(Sparse convolution2d layer)根据输入、卷积核、步长(stride)、填充(padding)、空洞大小(dilations)一组参数计算得到输出特征层大小。
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

整体请参考conv2d的review comment检查一遍

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done


输入(Input)和输出(Output)是 NHWC 格式。

其中 N 是批量大小,C 是通道数,H 是特征的高度,W 是特征层宽度。如果 bias_attr 不为 False,卷积计算会添加偏置项。

对于每个输入 X,方程为:

.. math::

Out = W \ast X + b

其中:

- :math:`X`:输入值,NHWC 格式的 Tensor
- :math:`W`:卷积核值,NHWC 格式的 Tensor
- :math:`*`:卷积操作
- :math:`b`:偏置值,1-D Tensor,形为 ``[M]``
- :math:`Out`:输出值,NHWC 格式的 Tensor,和 ``X`` 的形状可能不同

参数
::::::::::::

- **in_channels** (int) - 输入图像的通道数。
- **out_channels** (int) - 由卷积操作产生的输出的通道数。
- **kernel_size** (int|list|tuple) - 卷积核大小。
- **stride** (int|list|tuple,可选) - 步长大小。可以为单个整数或包含三个整数的元组或列表,分别表示卷积沿着深度,高和宽的步长。如果为单个整数,表示沿着高和宽的步长都等于该整数。默认值:1。
- **padding** (int|str|tuple|list,可选) - 填充大小。填充可以是以下形式之一:
1. 字符串 ['valid', 'same']。
2. 一个整数,表示每个空间维度(高度、宽度)的零填充大小。
3. 长度为空间维度数量的列表[int]或元组[int],包含每个空间维度两边的填充量。形式为 [pad_d1, pad_d2, ...]。
4. 长度为空间维度数量的两倍的列表[int]或元组[int]。形式为 [pad_before, pad_after, pad_before, pad_after, ...]。
5. 成对整数的列表或元组。形式为 [[pad_before, pad_after], [pad_before, pad_after], ...]。
注意,批量维度和通道维度也包括在内。每对整数对应输入的一个维度的填充量。批量维度和通道维度的填充应为 [0, 0] 或 (0, 0)。默认值为 0。
zade23 marked this conversation as resolved.
Show resolved Hide resolved
- **dilation** (int|list|tuple,可选) - 空洞大小。可以为单个整数或包含三个整数的元组或列表,分别表示卷积核中的元素沿着深度,高和宽的空洞。如果为单个整数,表示深度,高和宽的空洞都等于该整数。默认值:1。
- **groups** (int,可选) - 二维卷积层的组数。根据 Alex Krizhevsky 的深度卷积神经网络(CNN)论文中的成组卷积:当 group=n,输入和卷积核分别根据通道数量平均分为 n 组,第一组卷积核和第一组输入进行卷积计算,第二组卷积核和第二组输入进行卷积计算,……,第 n 组卷积核和第 n 组输入进行卷积计算。默认值:1。
- **padding_mode** (str,可选) - 填充模式。包括 ``'zeros'``, ``'reflect'``, ``'replicate'`` 或者 ``'circular'``。默认值:``'zeros'`` 。
- **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"。N 是批尺寸,C 是通道数,D 是特征深度,H 是特征高度,W 是特征宽度。默认值:"NDHWC"。 当前只支持"NDHWC"。


属性
::::::::::::

weight
'''''''''
本层的可学习参数,类型为 ``Parameter``

bias
'''''''''
本层的可学习偏置,类型为 ``Parameter``

形状
::::::::::::

- 输入::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.Conv2D
47 changes: 47 additions & 0 deletions docs/api/paddle/sparse/nn/functional/conv2d_cn.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
.. _cn_api_paddle_sparse_nn_functional_conv2d:

conv2d
-------------------------------

.. py:function:: paddle.sparse.nn.functional.conv2d(x, weight, bias=None, stride=1, padding=0, dilation=1, groups=1, data_format='NHWC', name=None)

稀疏二维卷积层(sparse convolution2d),根据输入、卷积核、步长(stride)、填充(padding)、空洞大小(dilations)一组参数计算得到输出特征层大小。输入和输出是 NHWC 格式,其中 N 是批尺寸,H 是特征的高度,W 是特征层宽度,C 是通道数。如果 bias_attr 不为 False,卷积计算会添加偏置项。
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • 空洞大小(dilations)一组参数 -> 空洞大小(dilations)、组参数(groups)
  • 计算得到的是输出特征,而不是输出特征层大小
  • multidimensional SparseCooTensors信息遗漏了

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • multidimensional SparseCooTensors信息遗漏了

遗漏信息补充: 输入(Input)和输出(Output)是形状为[N,H,W,C]的多维稀疏坐标格式张量(SparseCooTensors)。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done


对于每个输入 X,方程为:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

方程为 -> 计算公式为

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done


.. math::

Out = \sigma (W \ast X + b)

其中:

- :math:`X` :输入值,NHWC 格式的 Tensor
- :math:`W` :卷积核值,MCDHW 格式的 Tensor
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

此处与英文文档中的信息不相符

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

- :math:`*` :卷积操作
- :math:`b` :偏置值,1-D Tensor,形为 ``[M]``
- :math:`Out` :输出值, ``Out`` 和 ``X`` 的形状可能不同。

参数
::::::::::::
- **x** (Tensor) - 输入是形状为 [N, H, W, C] 的 4-D SparseCooTensor,输入的数据类型是 float16 或 float32 或 float64。
- **weight** (Tensor) - 卷积核,形状为 [kH, kW, C/g, M] 的张量,其中 M 是滤波器数(输出通道数),g 是分组数,kD、kH、kW 分别是滤波器的高度和宽度。
- **bias** (Tensor,可选) - 偏置,形状为 [M] 的张量。
- **stride** (int|list|tuple,可选) - 步长大小。指的是卷积中的步长。如果步长是列表/元组,则必须包含两个整数(stride_height, stride_width)。否则,stride_height = stride_width = stride。默认:stride = 1。
- **padding** (string|int|list|tuple,可选) - 填充大小。指的是每个维度两边的零填充数量。如果 `padding` 是字符串,可以是 'VALID' 或 'SAME',这是填充算法。如果填充大小是元组或列表,可以是以下三种形式:`[pad_height, pad_width]` 或 `[pad_height_top, pad_height_bottom, pad_width_left, pad_width_right]`。当 `data_format` 为 `"NHWC"` 时,`padding` 可以是 `[[0,0], [pad_height_top, pad_height_bottom], [pad_width_left, pad_width_right], [0,0]]` 的形式。默认:padding = 0。
- **dilation** (int|list|tuple,可选) - 空洞大小。空洞卷积时会使用该参数,卷积核对输入进行卷积时,感受野里每相邻两个特征点之间的空洞信息。如果空洞大小是列表或元组,则必须包含两个整数(dilation_height, dilation_width)。否则,dilation_height = dilation_width = dilation。默认:dilation = 1。
- **groups** (int,可选) - 二维卷积层的组数。根据 Alex Krizhevsky 的深度卷积神经网络(CNN)论文中的成组卷积:当 group=2 时,滤波器的前半部分只与输入通道的前半部分相连,而滤波器的后半部分只与输入通道的后半部分相连。默认:groups=1。目前,仅支持 groups=1。
- **data_format** (str,可选) - 指定输入的数据格式,输出的数据格式将与输入的一致。可选字符串:"NHWC"。默认为 "NHWC"。当为 "NHWC" 时,数据按以下顺序存储:`[batch_size, input_height, input_width, input_channels]`。
- **name** (str,可选) - 具体用法请参阅 :ref:`api_guide_Name`。通常无需设置名称,默认为 None。

返回
::::::::::::
- 表示 conv2d 的 SparseCooTensor,其数据类型与输入相同。

返回类型
::::::::::::
Tensor。

代码示例
::::::::::::

COPY-FROM: paddle.sparse.nn.functional.conv2d