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 相关文章推荐
pymongo实现多结果进行多列排序的方法
May 16 Python
python简单判断序列是否为空的方法
Jun 30 Python
pandas 透视表中文字段排序方法
Nov 16 Python
在python中利用GDAL对tif文件进行读写的方法
Nov 29 Python
django-rest-framework 自定义swagger过程详解
Jul 18 Python
python中的global关键字的使用方法
Aug 20 Python
Python turtle画图库&&画姓名实例
Jan 19 Python
tensorflow 2.0模式下训练的模型转成 tf1.x 版本的pb模型实例
Jun 22 Python
使用python实现下载我们想听的歌曲,速度超快
Jul 09 Python
如何用python开发Zeroc Ice应用
Jan 29 Python
python 将Excel转Word的示例
Mar 02 Python
pdf论文中python画的图Type 3 fonts字体不兼容的解决方案
Apr 24 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 left( right ) join使用on与where筛选的差异
2013/06/18 PHP
php使用pdo连接mssql server数据库实例
2014/12/25 PHP
php获取百度收录、百度热词及百度快照的方法
2015/04/02 PHP
javascript实现的动态添加表单元素input,button等(appendChild)
2007/11/24 Javascript
jQuery 各种浏览器下获得日期区别
2008/12/22 Javascript
jWiard 基于JQuery的强大的向导控件介绍
2011/10/28 Javascript
利用js实现前台动态添加文本框,后台获取文本框内容(示例代码)
2013/11/25 Javascript
jquery中使用循环下拉菜单示例代码
2014/09/24 Javascript
javascript+HTML5的Canvas实现Lab单车动画效果
2015/08/07 Javascript
JavaScript事件处理的方式(三种)
2016/04/26 Javascript
jQuery获取同级元素的简单代码
2016/07/09 Javascript
ES6中的数组扩展方法
2016/08/26 Javascript
js实现打地鼠小游戏
2017/02/13 Javascript
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
2017/10/23 Javascript
bootstrap-Treeview实现级联勾选
2017/11/23 Javascript
完美解决linux下node.js全局模块找不到的情况
2018/05/16 Javascript
JS中的算法与数据结构之常见排序(Sort)算法详解
2019/08/16 Javascript
vue点击按钮动态创建与删除组件功能
2019/12/29 Javascript
浅谈React中组件逻辑复用的那些事儿
2020/05/21 Javascript
[03:01]2014DOTA2国际邀请赛 小组赛7月13日TOPPLAY
2014/07/14 DOTA
详解Python中的装饰器、闭包和functools的教程
2015/04/02 Python
Python聚类算法之DBSACN实例分析
2015/11/20 Python
win系统下为Python3.5安装flask-mongoengine 库
2016/12/20 Python
在Pycharm中自动添加时间日期作者等信息的方法
2019/01/16 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
2019/02/12 Python
执行Django数据迁移时报 1091错误及解决方法
2019/10/14 Python
python如何求数组连续最大和的示例代码
2020/02/04 Python
基于Python快速处理PDF表格数据
2020/06/03 Python
Python Flask框架实现简单加法工具过程解析
2020/06/03 Python
利用Python实现Json序列化库的方法步骤
2020/09/09 Python
HTML5 Web Workers之网站也能多线程的实现
2013/04/24 HTML / CSS
如何避免常见的6种HTML5错误用法
2017/11/06 HTML / CSS
民主评议党员自我评价材料
2014/09/18 职场文书
学校施工安全责任书
2015/01/29 职场文书
佛光寺导游词
2015/02/10 职场文书
2015年中秋寄语
2015/07/31 职场文书