6.3_Square类和Exp类的功能扩展
6.3 Square类和Exp类的功能扩展
接下来实现具体函数的反向传播(backward)。首先从计算平方的Square类开始。由于 的导数是 ,所以这个类可以按照如下方式实现。
steps/step06.py
class Square(Function): def forward(self, x): y = x ** 2 return y def backward(self, gy): x = self.output.data $\mathrm{gx} = 2*x*g$ y return gx上面的代码增加了用于反向传播的backward方法。这个方法的参数gy是一个ndarray实例,它是从输出传播而来的导数。backward返回的结果是通过这个参数传播来的导数和“ 的导数”的乘积。这个返回结果会进一步向输入方向传播。
接下来是计算 的Exp类。由于 ,所以这个类可以按下面的方式实现。
steps/step06.py
class Exp(Function): def forward(self, x): y = np.exp(x) return y def backward(self, gy): x = self.output.data gx = np.exp(x) * gy return gx