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 实现堆排序算法代码
Jun 05 Python
使用python搭建Django应用程序步骤及版本冲突问题解决
Nov 19 Python
python 转换 Javascript %u 字符串为python unicode的代码
Sep 06 Python
利用Python命令行传递实例化对象的方法
Nov 02 Python
浅谈五大Python Web框架
Mar 20 Python
python中的set实现不重复的排序原理
Jan 24 Python
详解tensorflow载入数据的三种方式
Apr 24 Python
Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能
Nov 23 Python
Python高级特性之闭包与装饰器实例详解
Nov 19 Python
python ETL工具 pyetl
Jun 07 Python
利用python批量爬取百度任意类别的图片的实现方法
Oct 07 Python
分享Python异步爬取知乎热榜
Apr 12 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程序61条面向对象分析设计的经验小结
2008/11/12 PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
2013/11/28 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
理解Javascript_13_执行模型详解
2010/10/20 Javascript
关于jQuery中.attr()和.prop()的问题探讨
2013/09/06 Javascript
判断复选框是否被选中的两种方法
2014/06/04 Javascript
js监听鼠标点击和键盘点击事件并自动跳转页面
2014/09/24 Javascript
5个可以帮你理解JavaScript核心闭包和作用域的小例子
2014/10/08 Javascript
使用ajax+jqtransform实现动态加载select
2014/12/01 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
2015/03/13 Javascript
jQuery实现下拉菜单(内容为时间)的实时更新及图表的随动更新的方法
2016/07/07 Javascript
Javascript 跨域知识详细介绍
2016/10/30 Javascript
vue.js从安装到搭建过程详解
2017/03/17 Javascript
gulp解决跨域的配置文件问题
2017/06/08 Javascript
jQuery读取本地的json文件(实例讲解)
2017/10/31 jQuery
BootStrap自定义popover,点击区域隐藏功能的实现
2018/01/23 Javascript
快速搭建vue2.0+boostrap项目的方法
2018/04/09 Javascript
vue2.0+ 从插件开发到npm发布的示例代码
2018/04/28 Javascript
深入浅析Vue中的Prop
2018/06/10 Javascript
js动态设置select下拉菜单的默认选中项实例
2018/08/21 Javascript
Vux+Axios拦截器增加loading的问题及实现方法
2018/11/08 Javascript
vue中轮训器的使用
2019/01/27 Javascript
微信小程序实现点击卡片 翻转效果
2019/09/04 Javascript
Swiper.js实现移动端元素左右滑动
2019/09/08 Javascript
[46:20]TFT vs Secret Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[48:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第二场 1月29日
2021/03/11 DOTA
Python学习笔记(二)基础语法
2014/06/06 Python
Python冒泡排序注意要点实例详解
2016/09/09 Python
python实现的多线程端口扫描功能示例
2017/01/21 Python
使用python实现tcp自动重连
2017/07/02 Python
python 遍历目录(包括子目录)下所有文件的实例
2018/07/11 Python
python gensim使用word2vec词向量处理中文语料的方法
2019/07/05 Python
Python实现的微信红包提醒功能示例
2019/08/22 Python
python中有帮助函数吗
2020/06/19 Python
另类冲刺标语
2014/06/24 职场文书
联片教研活动总结
2014/07/01 职场文书