今天写代码的时候遇到一个需要进行转置的矩阵,由于涉及到梯度反传,所以有疑问转置之后的矩阵在转置之前的梯度是否存在,经过验证,转置不影响梯度的传播
import torch
x = torch.ones(2, 2, requires_grad=True)
y = x*8
z = y.transpose(0,1)
z=z*2
out =z[0][0]
# 求梯度 backward()
out.backward()
# 查看梯度
print(x.grad)
“”“
梯度为16,是转置前和转之后共同决定的
tensor([[16., 0.],
[ 0., 0.]])
“””