• 文档 >
  • torch >
  • torch.matmul
快捷键

torch.matmul

torch.matmul(input, other, *, out=None) Tensor

两个张量的矩阵乘积。

张量的行为取决于张量的维度,具体如下:

  • 如果两个张量都是一维的,则返回点积(标量)。

  • 如果两个参数都是二维的,则返回矩阵-矩阵乘积。

  • 如果第一个参数是一维的,而第二个参数是二维的,则在矩阵乘法之前在其维度前添加一个 1。矩阵乘法之后,将移除添加的维度。

  • 如果第一个参数是二维的,第二个参数是一维的,则返回矩阵-向量乘积。

  • 如果两个参数至少是一维的,并且至少有一个参数是 N 维的(其中 N > 2),则返回批处理矩阵乘法。如果第一个参数是一维的,则在其维度前添加 1 以用于批处理矩阵乘法,之后移除。如果第二个参数是一维的,则在其维度后添加 1 以用于批处理矩阵乘法,之后移除。非矩阵(即批处理)维度进行广播(因此必须是可广播的)。例如,如果 input 是一个 (j×1×n×n)(j \times 1 \times n \times n) 张量, other 是一个 (k×n×n)(k \times n \times n) 张量,那么 out 将是一个 (j×k×n×n)(j \times k \times n \times n) 张量。

    注意,广播逻辑仅在确定输入是否可广播时查看批处理维度,而不是矩阵维度。例如,如果 input 是一个 (j×1×n×m)(j \times 1 \times n \times m) 张量, other 是一个 (k×m×p)(k \times m \times p) 张量,即使最后两个维度(即矩阵维度)不同,这些输入也适用于广播。 out 将是一个 (j×k×n×p)(j \times k \times n \times p) 张量。

该操作支持具有稀疏布局的参数。特别是矩阵-矩阵(两个参数都是二维)支持具有与 torch.mm() 相同的限制的稀疏参数。

警告

稀疏支持是测试版功能,某些布局(s)/dtype/设备组合可能不受支持,或者可能没有自动微分支持。如果您发现缺少功能,请提交功能请求。

此运算符支持 TensorFloat32。

在某些 ROCm 设备上,当使用 float16 输入时,该模块将使用不同的精度进行反向操作。

注意

该函数的一维点积版本不支持 out 参数。

参数:
  • 输入(张量)- 要相乘的第一个张量

  • 其他(张量)- 要相乘的第二个张量

关键字参数:

输出(张量,可选)- 输出张量。

示例:

>>> # 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])

© 版权所有 PyTorch 贡献者。

使用 Sphinx 构建,并使用 Read the Docs 提供的主题。

文档

PyTorch 的全面开发者文档

查看文档

教程

深入了解初学者和高级开发者的教程

查看教程

资源

查找开发资源并获得您的疑问解答

查看资源