梯度下降法之二
来源:互联网 发布:com域名和cn域名 编辑:程序博客网 时间:2024/05/17 23:11
我感觉这个步长的求解,有点像信赖域的求解方法:
clc;clear;syms x1 x2;f1=inline('x(1)^2+4*x(2)^2','x');% grad=inline('[2*x(1),8*x(2)]','x');% x0=[1 1]; %x0 TolX=1e-4; %TolXTolFun=1e-9; %TolFun dist0=0.5; MaxIter=2; %MaxIter [xo,fo]=Opt_Steepest(f1,grad,x0,TolX,TolFun,dist0,MaxIter);%xo
function[xo,fo]=Opt_Steepest(f,grad,x0,TolX,TolFun,dist0,MaxIter)x = x0; fx0 = feval(f,x0); fx = fx0; dist = dist0; kmax1 = 25; %warning = 0; for k = 1: MaxIter g = feval(grad,x); g = g/norm(g); % dist = dist*2; %%令步长为原步长的二倍 fx1 = feval(f,x-dist*2*g); for k1 = 1:kmax1 fx2 = fx1; fx1 = feval(f,x-dist*g); if fx0 > fx1+TolFun & fx1 < fx2 - TolFun %fx0 > fx1 < fx2 den = 4*fx1 - 2*fx0 - 2*fx2; num = den - fx0 + fx2; % 这两步的原因是什么? dist = dist*num/den; x = x - dist*g; fx = feval(f,x); % break; else dist = dist/2; end end if k1 >= kmax1 warning = warning + 1; else warning = 0; end if warning >= 2|(norm(x - x0) < TolX&abs(fx - fx0) < TolFun) break; end x0 = x; fx0 = fx; end xo = x;fo = fx; if k == MaxIter fprintf('Just best in %d iterations',MaxIter); end
0 0
- 梯度下降法之二
- 梯度下降法二
- 【Python机器学习】梯度下降法(二)
- 最小二乘与梯度下降法
- 【二】梯度下降
- 优化算法之梯度下降法
- 优化算法之梯度下降法
- 机器学习之梯度下降法
- 机器学习系列之梯度下降法
- 机器学习之梯度下降法
- 线性回归之梯度下降法
- 机器学习算法之梯度下降法
- 神经网络之梯度下降法(5)
- 机器学习笔记之梯度下降(二)
- 梯度下降法
- 梯度下降法
- 梯度下降法
- 梯度下降法
- xml学习笔记 1. XML
- 运动检测(前景检测)之(一)ViBe
- Vim 配置ctags、winmanager、NERDTree、Taglist若干问题
- 如何安装Oracle VM VirtualBox Extension Pack
- CloudStack + XenServer 部署 – XenServer集群的安装和配置(4).
- 梯度下降法之二
- 指针函数 与 函数指针 的区别
- 详解spring 每个jar的作用
- 【数据结构】学习数据结构的学习笔记之串
- WebService技术简介
- 顺序表 与 链式表
- 警惕Java,迎来JavaScript
- CloudStack + XenServer 部署 – 创建高级网络资源域(5)
- std::stringstream用法