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 相关文章推荐
在Django中创建第一个静态视图
Jul 15 Python
python实现多线程抓取知乎用户
Dec 12 Python
python使用 HTMLTestRunner.py生成测试报告
Oct 20 Python
python切片及sys.argv[]用法详解
May 25 Python
python实现列表中由数值查到索引的方法
Jun 27 Python
Python Grid使用和布局详解
Jun 30 Python
python代码过长的换行方法
Jul 19 Python
Python OpenCV图像指定区域裁剪的实现
Oct 30 Python
基于Python检测动态物体颜色过程解析
Dec 04 Python
Django多数据库联用实现方法解析
Nov 12 Python
Django执行源生mysql语句实现过程解析
Nov 12 Python
python执行js代码的方法
May 13 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 和 MySQL 基础教程(二)
2006/10/09 PHP
PHP应用JSON技巧讲解
2013/02/03 PHP
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
2015/11/05 PHP
YII2.0之Activeform表单组件用法实例
2016/01/09 PHP
nginx下安装php7+php5
2016/07/31 PHP
php多进程中的阻塞与非阻塞操作实例分析
2020/03/04 PHP
几个常用的JavaScript字符串处理函数 - split()、join()、substring()和indexOf()
2009/06/02 Javascript
js下关于onmouseout、事件冒泡的问题经验小结
2010/12/09 Javascript
silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
2011/08/09 Javascript
关于JavaScript中原型继承中的一点思考
2012/07/25 Javascript
密码强度检测效果实现原理与代码
2013/01/04 Javascript
js获取class的所有元素
2013/03/28 Javascript
模拟多级复选框效果的jquery代码
2013/08/13 Javascript
吐槽一下我所了解的Node.js
2014/10/08 Javascript
js获取当前日期时间及其它日期操作汇总
2016/03/08 Javascript
Vue filter介绍及详细使用
2018/04/04 Javascript
微信小程序自定义带价格显示日历效果
2018/12/29 Javascript
layui监听单元格编辑前后交互的例子
2019/09/16 Javascript
原生javascript中this几种常见用法总结
2020/02/24 Javascript
[04:09]显微镜下的DOTA2第十二期—NaVi美如画的团战
2014/06/23 DOTA
Python使用xlwt模块操作Excel的方法详解
2018/03/27 Python
python3+PyQt5+Qt Designer实现扩展对话框
2018/04/20 Python
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
2018/07/30 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
2018/10/18 Python
Python实现队列的方法示例小结【数组,链表】
2020/02/22 Python
Python yield生成器和return对比代码实例
2020/04/20 Python
CSS3之背景尺寸Background-size使用介绍
2013/10/14 HTML / CSS
HTML5实现应用程序缓存(Application Cache)
2020/06/16 HTML / CSS
美国折扣香水网站:The Perfume Spot
2020/12/12 全球购物
专业销售业务员求职信
2013/11/18 职场文书
办理信用卡工作证明
2014/09/30 职场文书
2014年女职工工作总结
2014/11/27 职场文书
新年晚会主持词开场白
2015/05/28 职场文书
《我们的民族小学》教学反思
2016/02/19 职场文书
深入理解python多线程编程
2021/04/18 Python
评测 | 大屏显示带收音机的高端音箱,JBL TUNE2便携式插卡音箱实测
2021/04/24 无线电