.. _cn_api_fluid_layers_diag:

diag
-------------------------------

.. py:function:: paddle.fluid.layers.diag(diagonal)

:alias_main: paddle.diag
:alias: paddle.diag,paddle.tensor.diag,paddle.tensor.creation.diag
:old_api: paddle.fluid.layers.diag






该OP创建一个方阵，使用输入diagonal来指定方阵的对角线元素的值。

参数：
    - **diagonal** (Variable|numpy.ndarray) — 数据shape为 :math:`[N]` 一维Tensor，会把该Tensor的元素赋在方阵的对角线上。数据类型可以是 float32，float64，int32，int64。

返回：存储着方阵的Tensor，对角线值是输入Tensor diagonal的值， 数据shape为 :math:`[N, N]` 二维Tensor。

返回类型：Variable，数据类型和输入数据类型一致。

**代码示例**：

.. code-block:: python

        #  [3, 0, 0]
        #  [0, 4, 0]
        #  [0, 0, 5]

        import paddle.fluid as fluid
        import numpy as np
        diagonal = np.arange(3, 6, dtype='int32')
        data = fluid.layers.diag(diagonal)
        # diagonal.shape=(3,) data.shape=(3, 3)




