diff --git a/doc/fluid/api_cn/tensor_cn.rst b/doc/fluid/api_cn/tensor_cn.rst index 1069499e94e2bde5bd1548557e9e74efbc0948d6..4b9ab5106b36ba4c4922f9c530feadb87842af01 100644 --- a/doc/fluid/api_cn/tensor_cn.rst +++ b/doc/fluid/api_cn/tensor_cn.rst @@ -36,6 +36,7 @@ paddle.tensor tensor_cn/index_select_cn.rst tensor_cn/inverse_cn.rst tensor_cn/isnan_cn.rst + tensor_cn/kron_cn.rst tensor_cn/linspace_cn.rst tensor_cn/log1p_cn.rst tensor_cn/logsumexp_cn.rst diff --git a/doc/fluid/api_cn/tensor_cn/kron_cn.rst b/doc/fluid/api_cn/tensor_cn/kron_cn.rst new file mode 100644 index 0000000000000000000000000000000000000000..375bb480419fd2b9ad2bd90c487a479988272843 --- /dev/null +++ b/doc/fluid/api_cn/tensor_cn/kron_cn.rst @@ -0,0 +1,73 @@ +.. _cn_api_paddle_tensor_kron: + +kron +------------------------------- + +.. py:function:: paddle.tensor.kron(x, y, out=None, name=None) + + +Kronecker Product 算子。 + +该 OP 计算两个张量的克罗内克积,结果是一个合成的张量,由第二个张量经过第一个张量中的元素缩放 +后的组块构成。 + + +这个 OP 预设两个张量 $X$ 和 $Y$ 的秩 (rank) 相同,如有必要,将会在秩较小的张量的形状前面补 +上 1。令 $X$ 的形状是 [$r_0$, $r_1$, ..., $r_N$],$Y$ 的形状是 +[$s_0$, $s_1$, ..., $s_N$],那么输出张量的形状是 +[$r_{0}s_{0}$, $r_{1}s_{1}$, ..., $r_{N}s_{N}$]. 其中的元素是 $X$ 和 $Y$ 中的元素 +的乘积。 + +公式为 + +.. math:: + + output[k_{0}, k_{1}, ..., k_{N}] = X[i_{0}, i_{1}, ..., i_{N}] * + Y[j_{0}, j_{1}, ..., j_{N}] + + +其中 + +.. math:: + + k_{t} = i_{t} * s_{t} + j_{t}, t = 0, 1, ..., N + + +参数: + - **x** (Variable) – Kron OP 的第一个输入。多维 Tensor,数据类型为 float16, float32, float64, int32 或 int64。 + - **y** (Variable) – Kron OP 的第二个输入。多维 Tensor,数据类型为 float16, float32, float64, int32 或 int64,与 x 相同。 + - **out** (Variable, 可选) - 指定算子输出结果的 Tensor,可以是程序中已经创建的任何 Variable。默认值为 None,此时将创建新的 Variable 来保存输出结果。 + - **name** (str,可选) – 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为 None。 + +返回: + - Kron OP 的输出。多维 Tensor,数据类型为 float16, float32, float64, int32 或 int64,与 x 一致。 + +返回类型: Variable + + +**代码示例** + +.. code-block:: python + + import paddle + from paddle import fluid + import paddle.fluid.dygraph as dg + import numpy as np + + a = np.arange(1, 5).reshape(2, 2).astype(np.float32) + b = np.arange(1, 10).reshape(3, 3).astype(np.float32) + + place = fluid.CPUPlace() + with dg.guard(place): + a_var = dg.to_variable(a) + b_var = dg.to_variable(b) + c_var = paddle.kron(a_var, b_var) + c_np = c_var.numpy() + print(c_np) + + #[[ 1. 2. 3. 2. 4. 6.] + # [ 4. 5. 6. 8. 10. 12.] + # [ 7. 8. 9. 14. 16. 18.] + # [ 3. 6. 9. 4. 8. 12.] + # [12. 15. 18. 16. 20. 24.] + # [21. 24. 27. 28. 32. 36.]]