【python学习笔记】13:用梯度下降法求解最优值问题
来源:互联网 发布:盒饭网络销售怎么做 编辑:程序博客网 时间:2024/06/01 23:49
梯度是函数在某点沿每个坐标的偏导数构成的向量,它反映了函数沿着哪个方向增加得最快。因此要求解一个二元函数的极小值,只要沿着梯度的反方向走,直到函数值的变化满足精度即可。
这里打表存储了途径的每个点,最后在图上绘制出来以反映路径。
*梯度下降的具体实现
import matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3Dimport numpy as npdef Fun(x,y):#原函数 return x-y+2*x*x+2*x*y+y*ydef PxFun(x,y):#偏x导 return 1+4*x+2*ydef PyFun(x,y):#偏y导 return -1+2*x+2*y#初始化fig=plt.figure()#figure对象ax=Axes3D(fig)#Axes3D对象X,Y=np.mgrid[-2:2:40j,-2:2:40j]#取样并作满射联合Z=Fun(X,Y)#取样点Z坐标打表ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap="rainbow")ax.set_xlabel('x')ax.set_ylabel('y')ax.set_zlabel('z')#梯度下降step=0.0008#下降系数x=0y=0#初始选取一个点tag_x=[x]tag_y=[y]tag_z=[Fun(x,y)]#三个坐标分别打入表中,该表用于绘制点new_x=xnew_y=yOver=Falsewhile Over==False: new_x-=step*PxFun(x,y) new_y-=step*PyFun(x,y)#分别作梯度下降 if Fun(x,y)-Fun(new_x,new_y)<7e-9:#精度 Over=True x=new_x y=new_y#更新旧点 tag_x.append(x) tag_y.append(y) tag_z.append(Fun(x,y))#新点三个坐标打入表中#绘制点/输出坐标ax.plot(tag_x,tag_y,tag_z,'r.')plt.title('(x,y)~('+str(x)+","+str(y)+')')plt.show()
运行结果:
换个角度看:
验证结果是否正确:
阅读全文
0 0
- 【python学习笔记】13:用梯度下降法求解最优值问题
- Python使用tensorflow中梯度下降算法求解变量最优值
- 梯度下降法 求解回归问题
- 梯度下降法求解线性回归问题
- 梯度下降法求解线性回归之python实现
- 机器学习通俗入门-使用梯度下降法求解二分问题
- 【Python机器学习】梯度下降法(二)
- 梯度下降求解逻辑回归(Python)
- DeepLearning学习笔记-梯度下降法
- 斯坦福机器学习笔记:梯度下降法
- 梯度下降算法及python实现(学习笔记)
- Python学习笔记(九)一维、二维、多维梯度下降
- 梯度下降(学习笔记)
- 深度学习笔记---梯度下降
- 梯度下降法求解感知机模型
- 梯度下降法-python代码
- 梯度下降法Python代码
- Python实现梯度下降法
- Remove Element
- 253. Meeting Rooms II
- cors跨域请求,重复提交问题
- 123
- HDFS 指令(四)find,help,setfatter,truncate,usage
- 【python学习笔记】13:用梯度下降法求解最优值问题
- 负极大值搜索
- C语言中对二叉树的操作(递归算法)
- 我的Maven开发环境
- 负极大值搜索引擎
- 基于ruby语言selenium3安装与环境搭建---菜鸟分享坑爹经验
- hht变换
- 颜色ARGB学习
- js原生学习-初级-练习05