矩阵乘法:x=([x1,x2]) w=([w1,w2],[w3,w4])
torch.matmul(x,w)=([x1w1+x2w3,x1w2+x2+w4])
x.grad=(w1+w2,w3+w4)
矩阵中各元素对应相乘
x=([x1,x2]) w=([w1,w2],[w3,w4])
x * w=([x1w1,x2w2],[x1w3,x2w4])
(xw在pytorch中为矩阵各个元素对应相乘)
x.grad=(w1+w3,w2+w4)
代码x*y
:
x=torch.tensor([1.,2.],requires_grad=True)
y=torch.tensor([[1.,2.],[3.,4.]])
z=x*y
print(z)
z.backward(torch.ones_like(z))
print(x.grad)
运行:
tensor([[1., 4.],
[3., 8.]], grad_fn=<MulBackward0>)
tensor([4., 6.])
代码矩阵相乘
:
x=torch.tensor([1.,2.],requires_grad=True)
y=torch.tensor([[1.,2.],[3.,4.]])
z=torch.matmul(x,y)
print(z)
z.backward(torch.ones_like(z))
print(x.grad)
运行结果:
tensor([ 7., 10.], grad_fn=<SqueezeBackward3>)
tensor([3., 7.])