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如何把嵌套列表转变成普通列表
Mar 20 Python
python 字典中取值的两种方法小结
Aug 02 Python
Python3中_(下划线)和__(双下划线)的用途和区别
Apr 26 Python
Python Django框架实现应用添加logging日志操作示例
May 17 Python
python基于gevent实现并发下载器代码实例
Nov 01 Python
使用PyOpenGL绘制三维坐标系实例
Dec 24 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
Mar 27 Python
浅谈Python中threading join和setDaemon用法及区别说明
May 02 Python
解决pytorch多GPU训练保存的模型,在单GPU环境下加载出错问题
Jun 23 Python
Python必须了解的35个关键词
Jul 16 Python
如何在python中实现线性回归
Aug 10 Python
Python如何把字典写入到CSV文件的方法示例
Aug 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+oracle 分页类
2006/10/09 PHP
PHP分页显示制作详细讲解
2008/11/19 PHP
探讨php中遍历二维数组的几种方法详解
2013/06/08 PHP
php实现数组按指定KEY排序的方法
2015/03/30 PHP
typecho插件编写教程(六):调用接口
2015/05/28 PHP
详解PHP字符串替换str_replace()函数四种用法
2017/10/13 PHP
avalonjs实现仿微博的图片拖动特效
2015/05/06 Javascript
JQuery球队选择实例
2015/05/18 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
2016/08/26 Javascript
Angular中的interceptors拦截器
2017/06/25 Javascript
让Vue也可以使用Redux的方法
2018/05/23 Javascript
layui关闭弹窗后刷新主页面和当前更改项的例子
2019/09/06 Javascript
js实现AI五子棋人机大战
2020/05/28 Javascript
js代码实现轮播图
2020/05/04 Javascript
Python的print用法示例
2014/02/11 Python
Django如何实现内容缓存示例详解
2017/09/24 Python
python列表的增删改查实例代码
2018/01/30 Python
PyQt5实现简单数据标注工具
2019/03/18 Python
pygame实现打字游戏
2021/02/19 Python
使用 Python 读取电子表格中的数据实例详解
2020/04/17 Python
python将数据插入数据库的代码分享
2020/08/16 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
2020/09/09 Python
css3实现wifi信号逐渐增强效果实例
2017/08/09 HTML / CSS
美国Lolё官网:购买大胆而美丽的女性运动服装
2017/05/22 全球购物
教师求职自荐信
2014/03/09 职场文书
节水倡议书范文
2014/04/15 职场文书
小学生综合素质评语
2014/04/23 职场文书
优秀护士先进事迹
2014/05/08 职场文书
建议书的格式
2014/05/12 职场文书
中职招生先进个人材料
2014/08/31 职场文书
经贸日语专业自荐信
2014/09/02 职场文书
学习教师敬业奉献模范事迹材料思想汇报
2014/09/19 职场文书
审美与表现自我评价
2015/03/09 职场文书
2016年4月份红领巾广播稿
2015/12/21 职场文书
初中运动会闭幕词范本3篇
2019/12/09 职场文书
浅谈Redis 中的过期删除策略和内存淘汰机制
2022/04/03 Redis