Pytorch中的哈达玛积(Hadamard product)与矩阵乘积(Matrix product)的区别

在Pytorch中tensor处理时我们经常会遇到矩阵之间的乘法运算,而对于不同的要求会有不同的计算方式,特别是Hadamard积与矩阵乘积之间的差别。

哈达玛积:对于两个举证或者数组A和B,A和B的维度至少是2,如果是二位数组,则AB两个数组相对应的维度的值必须相等,例如A为m*n的数组,仅当数组B满足维度为m*n时,A与B才能进行哈达玛积运算,具体计算方式如下:

Pytorch中的哈达玛积(Hadamard product)与矩阵乘积(Matrix product)的区别_第1张图片

代码示例:

a = torch.Tensor([[1,2], [3,4]])
b = torch.Tensor([[5,6], [7,8]])
hadamard_product = a * b
print('hadamard_product:', hadamard_product)

hadamard_product: tensor([[ 5., 12.],
        [21., 32.]])

矩阵乘积:矩阵乘积就是线性代数中基本的矩阵乘法运算,它要求两个矩阵A和B的行数与列数相等,具体说明如下:

代码示例:

a = torch.Tensor([[1,2], [3,4]])
b = torch.Tensor([[5,6], [7,8]])
matrix_product = torch.matmul(a, b)
print('matrix_product:', matrix_product)

matrix_product: tensor([[19., 22.],
        [43., 50.]])

注意:在Pytorch中,两个张量A和B只是进行A*B运算即是哈达玛积,如果需要进行矩阵运算,则需要调用torch.matmul()函数,简单来说哈达玛积不需要调用函数,而矩阵乘积需要调用矩阵乘法函数。Pytorch中是这样,其实numpy中的使用方式也是如此。

你可能感兴趣的:(关于Pytorch的那些事儿)