22.3_除法

22.3 除法

除法式子 y=x0x1y = \frac{x_0}{x_1} 的导数为 yx0=1x1\frac{\partial y}{\partial x_0} = \frac{1}{x_1}yx1=x0(x1)2\frac{\partial y}{\partial x_1} = -\frac{x_0}{(x_1)^2} 。基于这个结果,我们编写如下代码。

steps/step22.py

class Div(Function): def forward(self, x0, x1): y = x0 / x1 return y def backward(self, gy): x0, x1 = self.inputs[0].data, selfinputs[1].data gx0 = gy / x1 gx1 = gy * (-x0 / x1 ** 2) return gx0, gx1   
def div(x0, x1): x1 = as_array(x1) return Div() (x0, x1)   
def rdiv(x0, x1): x1 = as_array(x1) return Div() (x1, x0) #交换x1和x0   
Variable._truediv_ = div Variable._rtruediv_ = rdiv

和减法运算一样,在实现除法运算时,我们也需要为右项和左项分别实现不同的函数。除此之外没有什么特别难的地方了。最后是幂运算。