Matrix 手动计算的渐变与自动栅格不匹配
我试图计算一个函数的梯度,在PyTorch中它是Matrix 手动计算的渐变与自动栅格不匹配,matrix,computer-vision,pytorch,gradient,backpropagation,Matrix,Computer Vision,Pytorch,Gradient,Backpropagation,我试图计算一个函数的梯度,在PyTorch中它是a*a*X*W0*W1 w.r.ta。 我已经手动计算了梯度,但是我没有得到与pytorch的自动梯度函数相同的答案。有人能帮我解决我做错的事吗 手动计算的功能是 def torch_grad(A, W0, W1, X): # Forward W0W1 = torch.mm(W0, W1) AX = torch.mm(A, X) AXW0W1 = torch.mm(AX, W0W1) AAXW0W1 = torch.mm(A,
a*a*X*W0*W1 w.r.ta
。
我已经手动计算了梯度,但是我没有得到与pytorch的自动梯度函数相同的答案。有人能帮我解决我做错的事吗
手动计算的功能是
def torch_grad(A, W0, W1, X):
# Forward
W0W1 = torch.mm(W0, W1)
AX = torch.mm(A, X)
AXW0W1 = torch.mm(AX, W0W1)
AAXW0W1 = torch.mm(A, AXW0W1)
# Backward / Gradients
rows, cols = AAXW0W1.size()
grad_AX = torch.mm(torch.eye(rows, cols), W0W1.t())
grad_AA = torch.mm(grad_AX, X.t())
grad_A = torch.mm(grad_AA, (2*A).t())
return grad_A
谢谢