当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python PyTorch matmul用法及代码示例


本文简要介绍python语言中 torch.matmul 的用法。

用法:

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

参数

  • input(Tensor) -第一个要相乘的张量

  • other(Tensor) -要相乘的第二个张量

关键字参数

out(Tensor,可选的) -输出张量。

两个张量的矩阵乘积。

行为取决于张量的维度,如下所示:

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

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

  • 如果第一个参数是一维的,第二个参数是二维的,为了矩阵乘法的目的,在它的维数前面加上一个 1。在矩阵相乘之后,前置维度被移除。

  • 如果第一个参数是二维的,第二个参数是一维的,则返回 matrix-vector 乘积。

  • 如果两个参数至少为一维且至少一个参数为 N 维(其中 N > 2),则返回批处理矩阵乘法。如果第一个参数是一维的,则将 1 添加到其维度,以便批量矩阵相乘并在之后删除。如果第二个参数是一维的,则将 1 附加到其维度以用于批量矩阵倍数并在之后删除。非矩阵(即批次)维度是广播的(因此必须是可广播的)。例如,如果input 张量并且other 张量,则out 将是 张量。

    请注意,广播逻辑在确定输入是否可广播时仅查看批处理维度,而不是矩阵维度。例如,如果input 张量,而other 张量,则即使最后两个维度(即矩阵维度)不同,这些输入对于广播也是有效的。 out 将是一个 张量。

该运算符支持 TensorFloat32。

注意

此函数的一维点积版本不支持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.org大神的英文原创作品 torch.matmul。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。