当函数值的变化量足够小,满足精度要求,或者迭代步数已足够时,就可以退出迭代。
下面以一个普通的二元函数为例,介绍梯度下降算法的基本实现。
二元函数的梯度公式如下:
?...此例中二元函数为:
z(x,y)= x**2 + 2*y**2 +2*x*y +4*x - 16*y +10
下面我们先利用python的符号计算模块sympy来计算它的理论最小值:
from sympy...,diff(z,x))
print("z对x的二阶偏导数:",diff(z,x,2))
print("z对y的一阶偏导数:",diff(z,y))
print("z对y的二阶偏导数:",diff(z,y...,2))
print("两个二阶偏导数都为正,所以存在极小值")
print()
print("x, y 如下时:")
r = solve([diff(z,x), diff(z,y)],x,y) #求解方程组...,end ="\n\n")
结果如下:
z对x的一阶偏导数: 2*x + 2*y + 4
z对x的二阶偏导数: 2
z对y的一阶偏导数: 2*x + 4*y - 16
z对y的二阶偏导数: 4
两个二阶偏导数都为正