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学习笔记之常用函数及说明
May 23 Python
Python set集合类型操作总结
Nov 07 Python
详细讲解用Python发送SMTP邮件的教程
Apr 29 Python
python3音乐播放器简单实现代码
Apr 20 Python
Python中的日期时间处理详解
Nov 17 Python
详解python进行mp3格式判断
Dec 23 Python
python使用生成器实现可迭代对象
Mar 20 Python
Python使用sorted对字典的key或value排序
Nov 15 Python
Python socket实现多对多全双工通信的方法
Feb 13 Python
Python 调用 Windows API COM 新法
Aug 22 Python
通过实例了解python property属性
Nov 01 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
May 23 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禁止页面缓存的代码
2011/10/23 PHP
PHP对表单提交特殊字符的过滤和处理方法汇总
2014/02/18 PHP
一个PHP的ZIP压缩类分享
2014/05/04 PHP
Symfony2函数用法实例分析
2016/03/18 PHP
php表单加入Token防止重复提交的方法分析
2016/10/10 PHP
php常用数组函数实例小结
2016/12/29 PHP
在js中单选框和复选框获取值的方式
2009/11/06 Javascript
DOM Scripting中的图片切换[兼容Firefox]
2010/06/12 Javascript
JavaScript原型继承之基础机制分析
2011/08/26 Javascript
有效提高JavaScript执行效率的几点知识
2015/01/31 Javascript
Java Mybatis框架入门基础教程
2015/09/21 Javascript
JQuery实现Ajax加载图片的方法
2015/12/24 Javascript
AngularJS使用自定义指令替代ng-repeat的方法
2016/09/17 Javascript
Nodejs进阶:基于express+multer的文件上传实例
2016/11/21 NodeJs
js倒计时显示实例
2016/12/11 Javascript
JS操作input标签属性checkbox全选的实现代码
2017/03/02 Javascript
jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一
2017/05/26 jQuery
原生js 封装get ,post, delete 请求的实例
2017/08/11 Javascript
jQuery实现手机号正则验证输入及自动填充空格功能
2018/01/02 jQuery
Vue2.x通用编辑组件的封装及应用详解
2019/05/28 Javascript
Vue.js标签页组件使用方法详解
2019/10/19 Javascript
vue2.0 获取从http接口中获取数据,组件开发,路由配置方式
2019/11/04 Javascript
浅谈Python类的__getitem__和__setitem__特殊方法
2016/12/25 Python
使用python读取txt文件的内容,并删除重复的行数方法
2018/04/18 Python
详解Python 正则表达式模块
2018/11/05 Python
python pickle存储、读取大数据量列表、字典数据的方法
2019/07/07 Python
Python计算两个矩形重合面积代码实例
2019/09/16 Python
css3的transform中scale缩放详解
2014/12/08 HTML / CSS
Lookfantastic瑞典:英国知名美妆购物网站
2018/04/06 全球购物
车间调度岗位职责
2013/11/30 职场文书
毕业生个人的求职信范文
2013/12/03 职场文书
本科毕业自我鉴定
2014/03/20 职场文书
大学新生军训方案
2014/05/03 职场文书
大一新生期末自我评价
2014/09/12 职场文书
python正则表达式re.search()的基本使用教程
2021/05/21 Python
提高系统的吞吐量解决数据库重复写入问题
2022/04/23 MySQL