# 梯度下降方式
# 求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)
不如
网友评论