Skip to content
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
.. _cn_api_paddle_incubate_nn_functional_fused_rotary_position_embedding:

fused_rotary_position_embedding
-------------------------------

.. py:function:: paddle.incubate.nn.functional.fused_rotary_position_embedding(q, k=None, v=None, sin=None, cos=None, position_ids=None, use_neox_rotary_style=True)
融合旋转位置编码。

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

- **q** (Tensor) - 输入张量。 数据类型可以是 bfloat16, float16, float32 或 float64。 q 的形状必须是 [batch_size, seq_len, num_heads, head_dim],并且 head_dim 必须是 2 的倍数。
- **k** (Tensor, 可选) - 输入张量。 数据类型可以是 bfloat16, float16, float32 或 float64。 k 的形状必须是 [batch_size, seq_len, num_heads, head_dim],并且 head_dim 必须是 2 的倍数。
- **v** (Tensor, 可选) - 输入张量。 数据类型可以是 bfloat16, float16, float32 或 float64。 v 的形状必须是 [batch_size, seq_len, num_heads, head_dim],并且 head_dim 必须是 2 的倍数。
- **sin** (Tensor, 可选) - 输入张量。 数据类型可以是 bfloat16, float16, float32 或 float64。 sin 的形状必须是 [seq_len, head_dim] 或 [1, seq_len, 1, head_dim], 并且 head_dim 必须是 2 的倍数。
- **cos** (Tensor, 可选) - 输入张量。 数据类型可以是 bfloat16, float16, float32 或 float64。 cos 的形状必须是 [seq_len, head_dim] 或 [1, seq_len, 1, head_dim], 并且 head_dim 必须是 2 的倍数。
- **position_ids** (Tensor, 可选) - 输入张量。 数据类型为 int64. position_ids 的形状为[batch_size, seq_len]。
- **use_neox_rotary_style** (可选|bool) - 当 use_neox_rotary_style 为 True, 每两个相邻的数字计算一次。 当 use_neox_rotary_style 为 False, 计算与前半段和后半段位置相对应的数字。 默认值为 True。


返回
::::::::::

- out_q/out_k/out_v 表示融合旋转位置嵌入的张量,具有与 `q` 相同的形状和数据类型。


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

COPY-FROM: paddle.incubate.nn.functional.fused_rotary_position_embedding
1 change: 1 addition & 0 deletions docs/api/paddle/sparse/Overview_cn.rst
Original file line number Diff line number Diff line change
Expand Up @@ -96,3 +96,4 @@ paddle.sparse 目录包含飞桨框架支持稀疏数据存储和计算相关的
" :ref:`paddle.sparse.nn.functional.conv3d <cn_api_paddle_sparse_nn_functional_conv3d>` ", "三维卷积函数"
" :ref:`paddle.sparse.nn.functional.subm_conv3d <cn_api_paddle_sparse_nn_functional_subm_conv3d>` ", "子流形三维卷积函数"
" :ref:`paddle.sparse.nn.functional.max_pool3d <cn_api_paddle_sparse_nn_functional_max_pool3d>` ", "三维最大池化函数"
" :ref:`paddle.sparse.nn.functional.subm_conv2d <cn_api_paddle_sparse_nn_functional_subm_conv2d>` ", "子流形二维卷积函数"
59 changes: 59 additions & 0 deletions docs/api/paddle/sparse/nn/functional/subm_conv2d_cn.rst
Copy link
Collaborator

Choose a reason for hiding this comment

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

整体可以参考 subm_conv2d,看看对应的英文翻译是否准确

Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
.. _cn_api_paddle_sparse_nn_functional_subm_conv2d:

subm_conv2d
-------------------------------

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

稀疏子流形二维卷积函数根据输入卷积核计算输出以及步长(stride)、填充(padding)、空洞大小(dilations)一组参数。
输入(Input)和输出(Output)是多维稀疏张量(SparseCooTensors), 其形状为 :math:`[N, H, W, C]` 。
其中 N 是批次大小, C 是通道数, H 是特征的高度, W 是特征的宽度。
如果提供了偏差归因,则将偏差添加到卷积的输出中。

Copy link
Contributor

Choose a reason for hiding this comment

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

一些名词描述上,可以参考下 https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/nn/Conv2D_cn.html#conv2d文档,名词与其保持一致。例如:
滤波器 -> 卷积核
步幅 -> 步长(stride)

对于每一个输入 :math:`X`, 其计算公式为:

.. math::
Out = \sigma (W \ast X + b)
在上面的等式中:

* :math:`X`: 输入值, NHWC 格式的张量。
* :math:`W`: 卷积核值, NHWC 格式的张量。
* :math:`\\ast`: 子流形卷积操作,参考论文: https://arxiv.org/abs/1706.01307.
* :math:`b`: 偏置值, 形状为[M]的一维张量。
* :math:`Out`: 输出值, :math:`Out` 的形状可能和 :math:`X` 有不同。


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

- x (Tensor): 输入是形状为 [N, H, W, C] 的四维稀疏张量, 输入数据类型为 float16、float32 或 float64。
- weight (Tensor): 形状为 [kH, kW, C/g, M] 的卷积核,其中 M 是卷积核(输出通道)的数量, g 是组的数量, kD、kH、kW 分别是卷积核的高度和宽度。
- bias (Tensor, optional): 偏差, 形状为 [M] 的张量。
- stride (int|list|tuple, optional): 步长大小, 意味着卷积的步长。如果步长为 list/tuple, 它必须包含两个整数 (stride_height, stride_width)。否则, stride_height = stride_width = stride。stride 的默认值为 1。
- padding (string|int|list|tuple, optional): 填充大小。它表示零填充在每个维度的两侧的数量。
如果 'padding' 是字符串,则 'VALID' 或 'SAME' 是填充算法。
如果填充大小是元组或列表,它可以有三种形式:'[pad_heigh, 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, optional): 空洞大小。它表示内核点之间的间距。
如果 dilation 是列表/元组,则它必须包含两个整数 (dilation_height、dilation_width)。
否则, dilation_height = dilation_width = dilation。
dilation 的默认值为 1。
- groups (int, optional): 二维卷积层的组号。根据 Alex Krizhevsky 的 Deep CNN 论文中的卷积分组:
当 group=2 时,卷积核的前半部分仅连接到前半部分的输入通道,而卷积核的后半部分仅连接到输入通道的后半部分。
groups 的默认值为 1。目前, 只有 support groups=1。
- data_format (str, optional): 指定输入的数据格式和输出的数据格式将与输入一致。即 `"NHWC"` 的可选字符串。默认值为 `"NHWC"`。
当它是 `"NHWC"` 时, 数据按以下顺序存储:`[batch_size, input_height, input_width, input_channels]`。
- key(str, optional):用于保存或使用相同规则手册的密钥,规则手册的定义和作用是指 https://pdfs.semanticscholar.org/5125/a16039cabc6320c908a4764f32596e018ad3.pdf。默认值为 None。
- name(str, optional):有关详细信息,请参阅到 :ref:`api_guide_Name`。通常名称是不需要设置的, 并且默认情况下为空。


返回
::::::::::

- 表示二维卷积的多维稀疏张量(SparseCooTenstor), 其数据类型与输入相同。


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

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