torch.kron#
- torch.kron(input, other, *, out=None) Tensor #
Computes the Kronecker product, denoted by ⊗, of
input
andother
.If
input
is a (a0×a1×⋯×an) tensor andother
is a (b0×b1×⋯×bn) tensor, the result will be a (a0∗b0×a1∗b1×⋯×an∗bn) tensor with the following entries:(input⊗other)k0,k1,…,kn=inputi0,i1,…,in∗otherj0,j1,…,jn,where kt=it∗bt+jt for 0≤t≤n. If one tensor has fewer dimensions than the other it is unsqueezed until it has the same number of dimensions.
Supports real-valued and complex-valued inputs.
Note
This function generalizes the typical definition of the Kronecker product for two matrices to two tensors, as described above. When
input
is a (m×n) matrix andother
is a (p×q) matrix, the result will be a (p∗m×q∗n) block matrix:A⊗B=a11B⋮am1B⋯⋱⋯a1nB⋮amnBwhere
input
is A andother
is B.- Parameters
- Keyword Arguments
out (Tensor, optional) – The output tensor. Ignored if
None
. Default:None
Examples:
>>> mat1 = torch.eye(2) >>> mat2 = torch.ones(2, 2) >>> torch.kron(mat1, mat2) tensor([[1., 1., 0., 0.], [1., 1., 0., 0.], [0., 0., 1., 1.], [0., 0., 1., 1.]]) >>> mat1 = torch.eye(2) >>> mat2 = torch.arange(1, 5).reshape(2, 2) >>> torch.kron(mat1, mat2) tensor([[1., 2., 0., 0.], [3., 4., 0., 0.], [0., 0., 1., 2.], [0., 0., 3., 4.]])