7.2_尝试反向传播
7.2 尝试反向传播
下面利用变量和函数之间的连接,尝试实现反向传播。首先实现从y到b的反向传播。代码如下所示(为了便于理解,这里附上了计算图)。

y.grad = np.array(1.0)
C = y creator # 1. 获取函数
b = C-input # 2. 获取函数的输入
b.grad = C.Backward(y.grad) # 3. 调用函数的backward方法上面的代码从y的实例变量creator获取函数,从函数的input获取输入变量,然后调用函数的backward方法。下面是从变量b到变量a反向传播的计算图和代码。

B = b creator # 1. 获取函数
a = B-input # 2. 获取函数的输入
a.grad = B.Backward(b.grad) # 3. 调用函数的backward方法上述代码执行的反向传播的逻辑与之前的相同。具体来说,该流程如下所示。
获取函数
获取函数的输入
调用函数的 backward 方法
最后是从变量a到变量x的反向传播。

A = a creator # 1. 获取函数
x = A_input # 2. 获取函数的输入
x.grad = A_backward(a.grad) # 3. 调用函数的 backward 方法
print(x.grad)运行结果
3.297442541400256
这样就完成了所有的反向传播。