未验证 提交 483af8dc 编写于 作者: S ShenLiang 提交者: GitHub

add cholesky (#2243)

* add cholesky_cn

* add dot, inverse, test=document

* fix doc, test=document

* fix doc, test=document
上级 ba3cba9c
.. _cn_api_tensor_cholesky:
cholesky
-------------------------------
**版本升级,文档正在开发中**
.. py:function:: paddle.cholesky(x, upper=False, name=None)
:alias_main: paddle.cholesky
:alias: paddle.cholesky, paddle.tensor.cholesky, paddle.tensor.linalg.cholesky
计算一个对称正定矩阵或一批对称正定矩阵的Cholesky分解。如果 `upper` 是 `True` ,
则分解形式为 :math:`A = U ^ {T} U` , 返回的矩阵U是上三角矩阵。
否则,分解形式为 :math:`A = LL ^ {T}` ,并返回矩阵 :math:`L` 是下三角矩阵。
参数:
- **x** (Variable)- 输入变量为多维Tensor,它的维度应该为 `[*, M, N]` ,其中*为零或更大的批次尺寸,并且最里面的两个维度上的矩阵都应为对称的正定矩阵,支持数据类型为float32,float64。
- **upper** (bool)- 指示是否返回上三角矩阵或下三角矩阵。默认值:False。
- **name** (str , 可选)- 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。
返回: 与 `x` 具有相同形状和数据类型的Tensor。它代表了Cholesky分解生成的三角矩阵。
返回类型: 变量(Variable)
**代码示例**
.. code-block:: python
import paddle
import numpy as np
paddle.enable_imperative()
a = np.random.rand(3, 3)
a_t = np.transpose(a, [1, 0])
x_data = np.matmul(a, a_t) + 1e-03
x = paddle.imperative.to_variable(x_data)
out = paddle.cholesky(x, upper=False)
print(out.numpy())
# [[1.190523 0. 0. ]
# [0.9906703 0.27676893 0. ]
# [1.25450498 0.05600871 0.06400121]]
......@@ -6,22 +6,23 @@ dot
.. py:function:: paddle.tensor.linalg.dot(x, y, name=None)
:alias_main: paddle.dot
:alias: paddle.dot,paddle.tensor.dot,paddle.tensor.linalg.dot
:alias: paddle.dot, paddle.tensor.dot, paddle.tensor.linalg.dot
该OP计算向量的内积
.. note::
仅支持1维Tensor(向量).
参数:
- **x** (Variable)- 1维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``
- **y** (Variable)- 1维 ``Tensor`` 或 ``LoDTensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``
- **x** (Variable)- 1维 ``Tensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``
- **y** (Variable)- 1维 ``Tensor`` 。数据类型为 ``float32`` 、 ``float64`` 、 ``int32`` 或 ``int64``
- **name** (str,可选)- 输出的名字。默认值为None。该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。
返回: ``Tensor`` 或 ``LoDTensor`` ,数据类型与 ``x`` 相同。
返回: ``Tensor`` ,数据类型与 ``x`` 相同。
返回类型: Variable。
......@@ -30,13 +31,12 @@ dot
.. code-block:: python
import paddle
import paddle.fluid as fluid
import numpy as np
with fluid.dygraph.guard():
x = fluid.dygraph.to_variable(np.random.uniform(0.1, 1, [10]).astype(np.float32))
y = fluid.dygraph.to_variable(np.random.uniform(1, 3, [10]).astype(np.float32))
z = paddle.dot(x, y)
print(z.numpy())
paddle.enable_imperative()
x_data = np.random.uniform(0.1, 1, [10]).astype(np.float32)
y_data = np.random.uniform(1, 3, [10]).astype(np.float32)
x = paddle.imperative.to_variable(x_data)
y = paddle.imperative.to_variable(y_data)
z = paddle.dot(x, y)
print(z.numpy())
......@@ -3,30 +3,28 @@
inverse
-------------------------------
.. py:function:: paddle.inverse(input, out=None, name=None)
.. py:function:: paddle.inverse(x, name=None)
:alias_main: paddle.inverse
:alias: paddle.inverse,paddle.tensor.inverse,paddle.tensor.math.inverse
:alias: paddle.inverse, paddle.tensor.inverse, paddle.tensor.math.inverse
计算方阵的逆。方阵是行数和列数相等的矩阵。输入可以是一个方阵(2-D张量),或者是批次方阵(维数大于2时)。
**参数**:
- **input** (Variable) – 输入张量,最后两维的大小必须相等。如果输入张量的维数大于2,则高维部分代表2-D矩阵的批次(batch)。支持的数据类型:float32,float64。
- **out** (Variable,可选) – 指定求和的结果Tensor,可以是程序中已经创建的任何Variable。默认值为None,此时将创建新的Variable来保存输出结果。
**参数**:
- **x** (Variable) – 输入张量,最后两维的大小必须相等。如果输入张量的维数大于2,则被视为2-D矩阵的批次(batch)。支持的数据类型:float32,float64。
- **name** (str,可选) – 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。
**返回**数据类型同输入。
**返回**: 数据类型同输入。
返回类型Variable
返回类型: Variable
抛出异常:
- :code:`TypeError` ,input不是Variable类型,或者数据类型不是float32、float64时
- :code:`ValueError` ,input的维数小于2时
- :code:`TypeError` ,out不是Variable类型,或者数据类型和input不相同时
- :code:`TypeError` ,x不是Variable类型,或者数据类型不是float32、float64时
- :code:`ValueError` ,x的维数小于2时
**代码示例**
**代码示例**:
.. code-block:: python
......@@ -34,7 +32,7 @@ inverse
import paddle
mat_np = np.array([[2, 0], [0, 2]]).astype("float32")
with paddle.imperative.guard():
mat = paddle.imperative.to_variable(mat_np)
inv = paddle.inverse(mat)
print(inv.numpy()) # [[0.5, 0], [0, 0.5]]
paddle.enable_imperative()
mat = paddle.imperative.to_variable(mat_np)
inv = paddle.inverse(mat)
print(inv) # [[0.5, 0], [0, 0.5]]
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册