python实现最速下降法


Posted in Python onMarch 24, 2020

本文实例为大家分享了python实现最速下降法的具体代码,供大家参考,具体内容如下

代码:

from sympy import *
import numpy as np
def backtracking_line_search(f,df,x,x_k,p_k,alpha0):
  rho=0.5
  c=10**-4
  alpha=alpha0
  replacements1=zip(x,x_k)
  replacements2=zip(x,x_k+alpha*p_k)
  f_k=f.subs(replacements1)
  df_p=np.dot([df_.subs(replacements1) for df_ in df],p_k)
  while f.subs(replacements2)>f_k+c*alpha*df_p:
    alpha=rho*alpha
    replacements2 = zip(x, x_k +alpha * p_k)
  return alpha
def stepest_line_search(f,x,x0,alpha0):
  df = [diff(f, x_) for x_ in x]
  x_k=x0
  alpha=alpha0
  replacements=zip(x,x_k)
  len_df = sqrt(np.sum([df_.subs(replacements) ** 2 for df_ in df]))
  while len_df>1e-6:
    p_k=-1*np.array([df_.subs(replacements) for df_ in df])
    alpha = backtracking_line_search(f, df, x, x_k, p_k, alpha)
    x_k=x_k+alpha*p_k
    replacements = zip(x, x_k)
    len_df=np.sum([df_.subs(replacements)**2 for df_ in df])
  return x_k
if __name__=="__main__":
  init_printing(use_unicode=True)
  x1 = symbols("x1")
  x2 = symbols("x2")
  x = np.array([x1, x2])
  f = 100 * (x2 - x1 ** 2)**2 + (1 - x1) ** 2
  ans=stepest_line_search(f, x, np.array([1.2, 1]), 1)
  print "the minimal value in point:",ans

分析:

这个采用的是backtracking line search来寻找alpha。

python实现最速下降法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python和shell变量互相传递的几种方法
Nov 20 Python
Python中IPYTHON入门实例
May 11 Python
Python3实现从文件中读取指定行的方法
May 22 Python
对python中类的继承与方法重写介绍
Jan 20 Python
Python爬虫:将headers请求头字符串转为字典的方法
Aug 21 Python
淘宝秒杀python脚本 扫码登录版
Sep 19 Python
pytorch1.0中torch.nn.Conv2d用法详解
Jan 10 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
Feb 25 Python
Python实现RabbitMQ6种消息模型的示例代码
Mar 30 Python
如何基于matlab相机标定导出xml文件
Nov 02 Python
Python爬虫中Selenium实现文件上传
Dec 04 Python
python基于win32api实现键盘输入
Dec 09 Python
python实现梯度法 python最速下降法
Mar 24 #Python
PyQt5+Pycharm安装和配置图文教程详解
Mar 24 #Python
python实现梯度下降法
Mar 24 #Python
pycharm下配置pyqt5的教程(anaconda虚拟环境下+tensorflow)
Mar 25 #Python
pycharm通过anaconda安装pyqt5的教程
Mar 24 #Python
详解PyQt5信号与槽的几种高级玩法
Mar 24 #Python
Windows10+anacond+GPU+pytorch安装详细过程
Mar 24 #Python
You might like
mysql 字段类型说明
2007/04/27 PHP
php 全局变量范围分析
2009/08/07 PHP
php csv操作类代码
2009/12/14 PHP
php下Memcached入门实例解析
2015/01/05 PHP
一个可以兼容IE FF的加为首页与加入收藏实现代码
2009/11/02 Javascript
解决jquery的.animate()函数在IE6下的问题
2010/12/03 Javascript
jQuery获取(选中)单选,复选框,下拉框中的值
2014/02/21 Javascript
JS实现的最简Table选项卡效果
2015/10/14 Javascript
VC调用javascript的几种方法(推荐)
2016/08/09 Javascript
Vue.js第四天学习笔记
2016/12/02 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
使用vue的transition完成滑动过渡的示例代码
2018/06/25 Javascript
详解vue axios二次封装
2018/07/22 Javascript
为vue项目自动设置请求状态的配置方法
2019/06/09 Javascript
[47:18]完美世界DOTA2联赛循环赛 IO vs FTD BO2第一场 11.05
2020/11/06 DOTA
详解Python中的各种函数的使用
2015/05/24 Python
实例讲解Python的函数闭包使用中应注意的问题
2016/06/20 Python
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
2018/02/13 Python
如何在Python中实现goto语句的方法
2019/05/18 Python
python中tkinter的应用:修改字体的实例讲解
2019/07/17 Python
Python爬虫学习之获取指定网页源码
2019/07/30 Python
使用Python串口实时显示数据并绘图的例子
2019/12/26 Python
spyder 在控制台(console)执行python文件,debug python程序方式
2020/04/20 Python
Python操作Excel把数据分给sheet
2020/05/20 Python
前端canvas水印快速制作(附完整代码)
2019/09/19 HTML / CSS
如何查看浏览器对html5的支持情况
2020/12/15 HTML / CSS
Sephora丝芙兰澳洲官方网站:国际知名化妆品购物
2016/10/27 全球购物
阿根廷首家户外用品制造商和经销商:Montagne
2018/02/12 全球购物
高级护理专业大学生求职信
2013/10/24 职场文书
大学生工作推荐信范文
2013/12/02 职场文书
幼教简历自我评价
2014/01/28 职场文书
秋天的图画教学反思
2014/05/01 职场文书
教师节活动总结
2014/08/29 职场文书
综合素质自我评价怎么写
2014/09/14 职场文书
企业领导班子四风对照检查材料
2014/09/27 职场文书
硕士学位论文评语
2014/12/31 职场文书