为什么我们使用
out = torch.mul(usr_emb, item_emb).sum()
而不是
out = torch.matmul(usr_emb, torch.transpose(item_emb))
当我们对RecSys进行矩阵分解时它是用来加速的还是别的什么?我可以使用第二个变体或第一个给予更好的结果吗?
sdnqo3pr1#
这是两个不同的运营商。一个是Hadamard product,或按元素乘法(torch.mul),而另一个是标准matrix multiplication(torch.matmul)。下面是一个例子,给定x为:
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]])
1条答案
按热度按时间sdnqo3pr1#
这是两个不同的运营商。一个是Hadamard product,或按元素乘法(
torch.mul
),而另一个是标准matrix multiplication(torch.matmul
)。下面是一个例子,给定
x
为: