numpy和pytorch中的矩阵乘法

矩阵乘法有3中,分别为*multiplydot。其中dot是真正意义上的线性代数中的矩阵乘法。而*multiply都是对应位置元素相乘。

如果矩阵维度不一样则采用广播机制,例如

a = torch.randn((2, 512, 8, 8))

b = torch.randn((2, 1, 8, 8))

c = a * b  # c.shape = (2, 512, 8, 8)

此时会将b矩阵在dim=1维度上repeat(2, 512, 8, 8)的矩阵,然后对应位置相乘。在attention实现中经常采用这种方法。

你可能感兴趣的:(pytorch,线性代数,深度学习)