kron

paddle.fluid.layers.kron(x, y, out=None, name=None)[源代码]

Kronecker Product 算子。

该 OP 计算两个张量的克罗内克积,结果是一个合成的张量,由第二个张量经过第一个张量中的元素缩放 后的组块构成。

这个 OP 预设两个张量

kron - 图1

X 和

kron - 图2

Y 的秩 (rank) 相同,如有必要,将会在秩较小的张量的形状前面补 上 1。令

kron - 图3

X 的形状是 [

kron - 图4

r0,

kron - 图5

r1, …,

kron - 图6

rN],

kron - 图7

Y 的形状是 [

kron - 图8

s0,

kron - 图9

s1, …,

kron - 图10

sN],那么输出张量的形状是 [

kron - 图11

r0s0,

kron - 图12

r1s1, …,

kron - 图13

rNsN]. 其中的元素是

kron - 图14

X 和

kron - 图15

Y 中的元素 的乘积。

公式为

kron - 图16

其中

kron - 图17

参数

  • 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,可选) – 该参数供开发人员打印调试信息时使用,具体用法请参见 Name ,默认值为 None。

返回

  • Kron OP 的输出。多维 Tensor,数据类型为 float16, float32, float64, int32 或 int64,与 x 一致。

返回类型

Variable

代码示例

  1. import paddle
  2. from paddle import fluid
  3. import paddle.fluid.dygraph as dg
  4. import numpy as np
  5. a = np.arange(1, 5).reshape(2, 2).astype(np.float32)
  6. b = np.arange(1, 10).reshape(3, 3).astype(np.float32)
  7. place = fluid.CPUPlace()
  8. with dg.guard(place):
  9. a_var = dg.to_variable(a)
  10. b_var = dg.to_variable(b)
  11. c_var = fluid.layers.kron(a_var, b_var)
  12. c_np = c_var.numpy()
  13. print(c_np)
  14. #[[ 1. 2. 3. 2. 4. 6.]
  15. # [ 4. 5. 6. 8. 10. 12.]
  16. # [ 7. 8. 9. 14. 16. 18.]
  17. # [ 3. 6. 9. 4. 8. 12.]
  18. # [12. 15. 18. 16. 20. 24.]
  19. # [21. 24. 27. 28. 32. 36.]]