💻 源码
import torch

"""
    bmm和matmul对比总结
        1- 都能够实现矩阵乘法运算。matmul是串行计算,效率低;bmm是并行计算,效率高
        2- 如果matmul的张量形状不等,会进行广播机制
        3- bmm的要求如下:
            3.1- 参与运算的两个张量的形状有且只能是三维。形状的含义(batch_size,行数,列数)
            3.2- 参与运算的两个张量的batch_size必须相等
            3.3- 参与运算的两个张量中,前一个张量的列数 与 后一个张量的行数 必须相同
            
    后面在计算注意力的时候,如果满足bmm的要求,推荐使用bmm;当然可以无脑使用matmul,因为兼容性更好
"""
if __name__ == '__main__':
    # 准备数据
    mat_1 = torch.randint(low=1,high=5,size=(10,3,4))
    # mat_1 = torch.randint(low=1,high=5,size=(1,3,4))
    mat_2 = torch.randint(low=1,high=5,size=(10,4,5))

    # matmul
    matmul_result = mat_1 @ mat_2
    print("matmul_result:",matmul_result.shape)

    # bmm
    bmm_result = torch.bmm(mat_1,mat_2)
    print("bmm_result:", bmm_result.shape)