diff --git a/doc/fluid/api_cn/nn_cn/diag_embed_cn.rst b/doc/fluid/api_cn/nn_cn/diag_embed_cn.rst index d72fea5853fa0ed4d211c398a9b8e1c54f66f8cf..bc3b5dbc883e499ce254c46662186609266b9e0c 100644 --- a/doc/fluid/api_cn/nn_cn/diag_embed_cn.rst +++ b/doc/fluid/api_cn/nn_cn/diag_embed_cn.rst @@ -1,3 +1,73 @@ -diag +.. _cn_api_functional_diag_embed: + +diag_embed ------------------------------- -**版本升级,文档正在开发中** + +.. py:function:: paddle.functional.diag_embed(input, offset=0, dim1=-2, dim2=-1): + + 该 OP 创建一个 Tensor,其在指定的 2D 平面(由 ``dim1`` 和 ``dim2`` 指定)上的对角线由输入 ``input`` 填充。 + 默认的,指定的 2D 平面由返回 Tensor 的最后两维组成。 + + 参数 ``offset`` 确定在指定的二维平面中填充对角线的位置: + + - 如果 offset = 0,则填充主对角线。 + - 如果 offset > 0,则填充主对角线右上的对角线。 + - 如果 offset < 0,则填充主对角线左下的对角线。 + +参数: + - **input** (Variable|numpy.ndarray)- 输入变量,至少为 1D 数组,支持数据类型为 float32,float64,int32,int64。 + - **offset** (int ,可选)- 从指定的二维平面中获取对角线的位置,默认值为 0,既主对角线。 + - **dim1** (int , 可选)- 填充对角线的二维平面的第一维,默认值为 -2。 + - **dim2** (int , 可选)- 填充对角线的二维平面的第二维,默认值为 -1。 + +返回: 指定二维平面填充了对角线的 Tensor。数据类型和输入数据类型一致。 + +返回类型: 变量(Variable) + +**代码示例** + +.. code-block:: python + + import paddle.nn.functional as F + import paddle.fluid.dygraph as dg + import numpy as np + + diag_embed = np.random.randn(2, 3).astype('float32') + # [[ 0.7545889 , -0.25074545, 0.5929117 ], + # [-0.6097662 , -0.01753256, 0.619769 ]] + with dg.guard(): + data1 = F.diag_embed(diag_embed) + data1.numpy() + # [[[ 0.7545889 , 0. , 0. ], + # [ 0. , -0.25074545, 0. ], + # [ 0. , 0. , 0.5929117 ]], + + # [[-0.6097662 , 0. , 0. ], + # [ 0. , -0.01753256, 0. ], + # [ 0. , 0. , 0.619769 ]]] + + data2 = F.diag_embed(diag_embed, offset=-1, dim1=0, dim2=2) + data2.numpy() + # [[[ 0. , 0. , 0. , 0. ], + # [ 0.7545889 , 0. , 0. , 0. ], + # [ 0. , -0.25074545, 0. , 0. ], + # [ 0. , 0. , 0.5929117 , 0. ]], + # + # [[ 0. , 0. , 0. , 0. ], + # [-0.6097662 , 0. , 0. , 0. ], + # [ 0. , -0.01753256, 0. , 0. ], + # [ 0. , 0. , 0.619769 , 0. ]]] + + data3 = F.diag_embed(diag_embed, offset=1, dim1=0, dim2=2) + data3.numpy() + # [[[ 0. , 0.7545889 , 0. , 0. ], + # [ 0. , -0.6097662 , 0. , 0. ]], + # + # [[ 0. , 0. , -0.25074545, 0. ], + # [ 0. , 0. , -0.01753256, 0. ]], + # + # [[ 0. , 0. , 0. , 0.5929117 ], + # [ 0. , 0. , 0. , 0.619769 ]], + # + # [[ 0. , 0. , 0. , 0. ], + # [ 0. , 0. , 0. , 0. ]]] diff --git a/doc/fluid/api_cn/tensor_cn.rst b/doc/fluid/api_cn/tensor_cn.rst index 4b9ab5106b36ba4c4922f9c530feadb87842af01..05525b8f4bff77413e30b7d8517099e8438a43d5 100644 --- a/doc/fluid/api_cn/tensor_cn.rst +++ b/doc/fluid/api_cn/tensor_cn.rst @@ -68,6 +68,7 @@ paddle.tensor tensor_cn/tanh_cn.rst tensor_cn/t_cn.rst tensor_cn/tensordot_cn.rst + tensor_cn/trace_cn.rst tensor_cn/transpose_cn.rst tensor_cn/tril_cn.rst tensor_cn/triu_cn.rst @@ -76,4 +77,4 @@ paddle.tensor tensor_cn/var_cn.rst tensor_cn/where_cn.rst tensor_cn/zeros_cn.rst - tensor_cn/zeros_like_cn.rst + tensor_cn/zeros_like_cn.rst \ No newline at end of file diff --git a/doc/fluid/api_cn/tensor_cn/trace_cn.rst b/doc/fluid/api_cn/tensor_cn/trace_cn.rst new file mode 100644 index 0000000000000000000000000000000000000000..af92e67845677168756f5704f602d22bb49b63ec --- /dev/null +++ b/doc/fluid/api_cn/tensor_cn/trace_cn.rst @@ -0,0 +1,48 @@ +.. _cn_api_tensor_trace: + +trace +------------------------------- + +.. py:function:: paddle.trace(input, offset=0, dim1=0, dim2=1) + +该 OP 计算输入 Tensor 在指定平面上的对角线元素之和,并输出相应的计算结果。 + +如果输入是 2D Tensor,则返回对角线元素之和。 + +如果输入的维度大于 2D,则返回一个由对角线元素之和组成的数组,其中对角线从由 dim1 和 dim2 指定的二维平面中获得。默认由输入的前两维组成获得对角线的 2D 平面。 + +参数 ``offset`` 确定从指定的二维平面中获取对角线的位置: + + - 如果 offset = 0,则取主对角线。 + - 如果 offset > 0,则取主对角线右上的对角线。 + - 如果 offset < 0,则取主对角线左下的对角线。 + +参数: + - **input** (Variable)- 输入变量,至少为 2D 数组,支持数据类型为 float32,float64,int32,int64。 + - **offset** (int ,可选)- 从指定的二维平面中获取对角线的位置,默认值为 0,既主对角线。 + - **dim1** (int , 可选)- 获取对角线的二维平面的第一维,默认值为 0。 + - **dim2** (int , 可选)- 获取对角线的二维平面的第二维,默认值为 1。 + +返回: 指定二维平面的对角线元素之和。数据类型和输入数据类型一致。 + +返回类型: 变量(Variable) + +**代码示例** + +.. code-block:: python + + import paddle.tensor as tensor + import paddle.fluid.dygraph as dg + import numpy as np + + case1 = np.random.randn(2, 3).astype('float32') + case2 = np.random.randn(3, 10, 10).astype('float32') + case3 = np.random.randn(3, 10, 5, 10).astype('float32') + + with dg.guard(): + case1 = dg.to_variable(case1) + case2 = dg.to_variable(case2) + case3 = dg.to_variable(case3) + data1 = tensor.trace(case1) # data1.shape = [1] + data2 = tensor.trace(case2, offset=1, dim1=1, dim2=2) # data2.shape = [3] + data3 = tensor.trace(case3, offset=-3, dim1=1, dim2=-1) # data2.shape = [3, 5]