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实现的Kmeans++算法实例
Apr 26 Python
Python过滤函数filter()使用自定义函数过滤序列实例
Aug 26 Python
Python随机生成彩票号码的方法
Mar 05 Python
python动态性强类型用法实例
May 09 Python
详解python之简单主机批量管理工具
Jan 27 Python
python中找出numpy array数组的最值及其索引方法
Apr 17 Python
python中将\\uxxxx转换为Unicode字符串的方法
Sep 06 Python
解决pyqt5中QToolButton无法使用的问题
Jun 21 Python
Python处理时间日期坐标轴过程详解
Jun 25 Python
python写入文件自动换行问题的方法
Jul 05 Python
Flask框架请求钩子与request请求对象用法实例分析
Nov 07 Python
pandas中对文本类型数据的处理小结
Nov 01 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
浅析application/x-www-form-urlencoded和multipart/form-data的区别
2014/06/22 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
PHP7新功能总结
2019/04/14 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
JS实现在Repeater控件中创建可隐藏区域的代码
2010/09/16 Javascript
关于跨站脚本攻击问题
2011/12/22 Javascript
Json字符串转换为JS对象的高效方法实例
2013/05/01 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
2014/06/16 Javascript
利用a标签自动解析URL分析网址实例
2014/10/20 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
2020/03/30 Javascript
详解Javascript数据类型的转换规则
2016/12/12 Javascript
AngularJS之页面跳转Route实例代码
2017/03/10 Javascript
js中innerText/textContent和innerHTML与target和currentTarget的区别
2019/01/21 Javascript
详解JS判断页面是在手机端还是在PC端打开的方法
2019/04/26 Javascript
Vue使用lodop实现打印小结
2019/07/06 Javascript
解决vue的过渡动画无法正常实现问题
2019/10/31 Javascript
基于JS正则表达式实现模板数据动态渲染(实现思路详解)
2020/03/07 Javascript
js中switch语句的学习笔记
2020/03/25 Javascript
js实现简单贪吃蛇游戏
2020/05/15 Javascript
js实现tab栏切换效果
2020/08/02 Javascript
vant-ui组件调用Dialog弹窗异步关闭操作
2020/11/04 Javascript
[44:50]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 TNC vs VG
2018/04/02 DOTA
关于你不想知道的所有Python3 unicode特性
2014/11/28 Python
快速查询Python文档方法分享
2017/12/27 Python
python opencv之SURF算法示例
2018/02/24 Python
TensorFlow模型保存和提取的方法
2018/03/08 Python
Python3 实现串口两进程同时读写
2019/06/12 Python
python网络爬虫 CrawlSpider使用详解
2019/09/27 Python
升职自荐书范文
2013/11/28 职场文书
企业军训感言
2014/02/08 职场文书
婚礼主持词开场白
2014/03/13 职场文书
公司晚会主持词
2014/03/22 职场文书
物理系毕业生自荐书
2014/06/13 职场文书
语文教师个人工作总结
2015/02/06 职场文书
中小企业员工手册范本
2015/05/14 职场文书
房产证明范本
2015/06/19 职场文书