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标准库与第三方库详解
Jul 22 Python
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
Jul 12 Python
python安装cx_Oracle模块常见问题与解决方法
Feb 21 Python
python中字符串比较使用is、==和cmp()总结
Mar 18 Python
用Python实现BP神经网络(附代码)
Jul 10 Python
Django 在iframe里跳转顶层url的例子
Aug 21 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
Jan 14 Python
Python 文件数据读写的具体实现
Jan 24 Python
python实现udp聊天窗口
Mar 31 Python
pyspark 随机森林的实现
Apr 24 Python
keras:model.compile损失函数的用法
Jul 01 Python
Python3爬虫关于识别点触点选验证码的实例讲解
Jul 30 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
基于PHP实现用户注册登录功能
2016/10/14 PHP
JavaScript this 深入理解
2009/07/30 Javascript
利用了jquery的ajax实现二级联互动菜单
2013/12/02 Javascript
node.js中的socket.io入门实例
2014/04/26 Javascript
Css3制作变形与动画效果
2015/07/24 Javascript
jquery插件jquery.beforeafter.js实现左右拖拽分隔条对比图片的方法
2015/08/07 Javascript
对javascript继承的理解
2016/10/11 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
JS 判断某变量是否为某数组中的一个值的3种方法(总结)
2017/07/10 Javascript
微信小程序bindinput与bindsubmit的区别实例分析
2019/04/17 Javascript
vue 实现强制类型转换 数字类型转为字符串
2019/11/07 Javascript
jquery css实现流程进度条
2020/03/26 jQuery
vue实现列表拖拽排序的功能
2020/11/02 Javascript
vue中activated的用法
2021/01/03 Vue.js
解决python文件字符串转列表时遇到空行的问题
2017/07/09 Python
Python进阶学习之特殊方法实例详析
2017/12/01 Python
Python 操作 ElasticSearch的完整代码
2019/08/04 Python
详解python路径拼接os.path.join()函数的用法
2019/10/09 Python
python字典排序的方法
2019/10/12 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
2019/12/13 Python
Python是怎样处理json模块的
2020/07/16 Python
详解Python 中的容器 collections
2020/08/17 Python
Python使用pickle进行序列化和反序列化的示例代码
2020/09/22 Python
一款纯css3制作的2015年元旦雪人动画特效教程
2014/12/29 HTML / CSS
深入解析HTML5的IndexedDB索引数据库
2015/09/14 HTML / CSS
枚举和一组预处理的#define有什么不同
2016/09/21 面试题
如何保障Web服务器安全
2014/05/05 面试题
百度软件工程师职位
2013/02/14 面试题
酒店保洁主管岗位职责
2013/11/28 职场文书
美化环境标语
2014/06/20 职场文书
幼儿园教师岗位职责
2015/04/02 职场文书
公司财务管理制度
2015/08/04 职场文书
入门学习Go的基本语法
2021/07/07 Golang
MySQL图形化管理工具Navicat安装步骤
2021/12/04 MySQL
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
2022/04/21 Python
CSS list-style-type属性使用方法
2023/05/21 HTML / CSS