1.自动微分是深度学习框架的一个属性,通过正向传播和反向传播表现出来。
2.正向传播一般是显式定义y关于x的函数,例如:y=2*x。
3.反向传播之前必须要有正向传播存在,正向传播给反向传播提供了x和y的向量形式、y关于x各
量的关系等,总的来说:正向传播生成了计算图,为反向传播提供了基础。
4.在运行反向传播函数y.backward()之前有两步固定操作:
①清空梯度:x.grad.zero_(),因为梯度的计算是累加的形式。
②正向传播:也即给出y关于x的定义公式,例如:y=2*x。
要知道反向传播函数y.backward()运行之后会因为释放内存的原因释放掉上一次正向传播所生成
计算图,因此如果不在y.backward()之前再次正向传播生成计算图,那么y.backward()就会报错。