torch.matmul¶

torch.
matmul
(input, other, out=None) → Tensor¶ Matrix product of two tensors.
The behavior depends on the dimensionality of the tensors as follows:
If both tensors are 1dimensional, the dot product (scalar) is returned.
If both arguments are 2dimensional, the matrixmatrix product is returned.
If the first argument is 1dimensional and the second argument is 2dimensional, a 1 is prepended to its dimension for the purpose of the matrix multiply. After the matrix multiply, the prepended dimension is removed.
If the first argument is 2dimensional and the second argument is 1dimensional, the matrixvector product is returned.
If both arguments are at least 1dimensional and at least one argument is Ndimensional (where N > 2), then a batched matrix multiply is returned. If the first argument is 1dimensional, a 1 is prepended to its dimension for the purpose of the batched matrix multiply and removed after. If the second argument is 1dimensional, a 1 is appended to its dimension for the purpose of the batched matrix multiple and removed after. The nonmatrix (i.e. batch) dimensions are broadcasted (and thus must be broadcastable). For example, if
input
is a $(j \times 1 \times n \times m)$ tensor andother
is a $(k \times m \times p)$ tensor,out
will be an $(j \times k \times n \times p)$ tensor.
Note
The 1dimensional dot product version of this function does not support an
out
parameter. Parameters
Example:
>>> # vector x vector >>> tensor1 = torch.randn(3) >>> tensor2 = torch.randn(3) >>> torch.matmul(tensor1, tensor2).size() torch.Size([]) >>> # matrix x vector >>> tensor1 = torch.randn(3, 4) >>> tensor2 = torch.randn(4) >>> torch.matmul(tensor1, tensor2).size() torch.Size([3]) >>> # batched matrix x broadcasted vector >>> tensor1 = torch.randn(10, 3, 4) >>> tensor2 = torch.randn(4) >>> torch.matmul(tensor1, tensor2).size() torch.Size([10, 3]) >>> # batched matrix x batched matrix >>> tensor1 = torch.randn(10, 3, 4) >>> tensor2 = torch.randn(10, 4, 5) >>> torch.matmul(tensor1, tensor2).size() torch.Size([10, 3, 5]) >>> # batched matrix x broadcasted matrix >>> tensor1 = torch.randn(10, 3, 4) >>> tensor2 = torch.randn(4, 5) >>> torch.matmul(tensor1, tensor2).size() torch.Size([10, 3, 5])