梯度下降求x*x+y*y最小值
2017-12-22 本文已影响0人
Ylm007
# 梯度下降方式
# 求f(x)=x*x+y*y的最小值
# x方向梯度
def f(x, y):
return x * x + y * y;
# 初始化点
x = 10;
y = 10;
# 学习速率
speed = 0.01;
temp = f(x, y);
while 1:
# x方向梯度
gX = speed * 2 * x;
# y方向梯度
gY = speed * 2 * y;
# 0.0001的误差
if abs(f(x - gX, y - gY) - temp) > 0.00001:
# 更新梯度
x = x - gX;
y = y - gY;
temp = f(x, y);
continue;
break;
print(x, y)
![](https://img.haomeiwen.com/i8515786/8c21e98b135e1eb5.jpg)