4.3_复合函数的导数
4.3 复合函数的导数
我们在前面接触的是 这种简单的函数。接下来尝试对复合函数求导。下面求 的导数 。代码如下所示。
steps/step04.py
def f(x):
A = Square()
B = Exp()
C = Square()
return C(B(A(x)))
x = Variable(np.array(0.5))
dy = numerical_diff(f, x)
print(dy)运行结果
3.2974426293330694
上面的代码将一系列的计算组合成了一个名为f的函数。函数在Python中也是对象,所以可以作为参数传给其他函数。在上面的例子中,函数f作为参数传给了numerical_diff函数。
运行上面的代码,得到的导数是3.297...。这意味着,如果x从0.5变成一个微小的值,y值的变化幅度将是这个微小值的3.297...倍。
现在我们已经成功实现了“自动”求导。只要用代码来定义要完成的计算(前面的例子定义了函数f),程序就会自动求出导数。使用这种方法,无论多么复杂的函数组合,程序都能自动求出导数。今后函数的种类越来越多的话,不管是什么计算,只要是可微函数,程序就能求出它的导数。不过遗憾的是,数值微分的方法存在一些问题。