我们为什么使用
out = torch.mul(usr_emb, item_emb).sum()
而不是
out = torch.matmul(usr_emb, torch.transpose(item_emb))
当我们对 RecSys 进行矩阵分解时?
它是用于速度还是其他什么?我可以使用第二种变体还是第一种可以得到更好的结果?
这是两个不同的运算符。一种是 Hadamard 积,或按元素乘法 (
torch.mul
),另一种是标准 矩阵乘法 (torch.matmul
)。
这是一个示例,将
x
指定为:
>>> x = torch.arange(9).view(3,3)
>>> x.mul(x) # same as x*x
tensor([[ 0, 1, 4],
[ 9, 16, 25],
[36, 49, 64]])
>>> x.matmul(x) # same as x@x
tensor([[ 15, 18, 21],
[ 42, 54, 66],
[ 69, 90, 111]])