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判断字符串编码的简单实现方法(使用chardet)
Jul 01 Python
Python 专题一 函数的基础知识
Mar 16 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
Dec 12 Python
浅谈Django学习migrate和makemigrations的差别
Jan 18 Python
简单实现python画圆功能
Jan 25 Python
python利用requests库模拟post请求时json的使用教程
Dec 07 Python
Python实现八皇后问题示例代码
Dec 09 Python
Django 中间键和上下文处理器的使用
Mar 17 Python
在python里创建一个任务(Task)实例
Apr 25 Python
python异常处理之try finally不报错的原因
May 18 Python
利用python制作拼图小游戏的全过程
Dec 04 Python
pandas:get_dummies()与pd.factorize()的用法及区别说明
May 21 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中常用的输出函数总结
2014/09/22 PHP
php实现随机显示图片方法汇总
2015/05/21 PHP
PHP简单实现解析xml为数组的方法
2018/05/02 PHP
laravel框架 laravel-admin上传图片到oss的方法
2019/10/13 PHP
javascript与asp.net(c#)互相调用方法
2009/12/13 Javascript
Jquery实战_读书笔记2 选择器
2010/01/22 Javascript
JQUERY 获取IFrame中对象及获取其父窗口中对象示例
2013/08/19 Javascript
JS实现将人民币金额转换为大写的示例代码
2014/02/13 Javascript
JavaScript中用于生成随机数的Math.random()方法
2015/06/15 Javascript
浅谈$(document)和$(window)的区别
2015/07/15 Javascript
Jquery 垂直多级手风琴菜单附源码下载
2015/11/17 Javascript
第一次接触JS require.js模块化工具
2016/04/17 Javascript
Javascript6中字符串的四个新用法分享
2016/09/11 Javascript
AngularJS实现在ng-Options加上index的解决方法
2016/11/03 Javascript
详解webpack进阶之loader篇
2017/08/23 Javascript
vue项目打包部署_nginx代理访问方法详解
2018/09/20 Javascript
Vue组件的使用及个人理解与介绍
2019/02/09 Javascript
vue3为什么要用proxy替代defineProperty
2020/10/19 Javascript
在Python的web框架中配置app的教程
2015/04/30 Python
python实现比较两段文本不同之处的方法
2015/05/30 Python
python Socket之客户端和服务端握手详解
2017/09/18 Python
Python中交换两个元素的实现方法
2018/06/29 Python
对Python的交互模式和直接运行.py文件的区别详解
2019/06/29 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
2020/01/03 Python
pytorch masked_fill报错的解决
2020/02/18 Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
2020/10/23 Python
python实现磁盘日志清理的示例
2020/11/05 Python
利用CSS3实现毛玻璃效果示例源码
2016/09/25 HTML / CSS
css3.0 图形构成实例练习二
2013/03/19 HTML / CSS
HTML5 Canvas阴影使用方法实例演示
2013/08/02 HTML / CSS
计算机专业自我鉴定
2013/10/15 职场文书
设计部经理的岗位职责
2013/11/16 职场文书
医学类导师推荐信范文
2013/11/19 职场文书
护士实习生自我鉴定范文
2013/12/10 职场文书
应届毕业生求职信范文
2014/05/08 职场文书
培训简讯范文
2015/07/20 职场文书