日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

梯度算法的matlab程序,基于MATLAB的梯度法源代码

發(fā)布時間:2023/12/10 循环神经网络 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 梯度算法的matlab程序,基于MATLAB的梯度法源代码 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

話不多說,直接上干貨。這是基于MATLAB的源代碼,目標函數(shù)我選擇了一個二維函數(shù),根據(jù)自己需求,更改目標函數(shù),初始迭代點以及收斂精度

第一部分:目標函數(shù) ??根據(jù)自己需求,更改目標函數(shù)!!!

function y=ObjFun(x)

%目標函數(shù) 根據(jù)實際情況修改

%輸入?yún)?shù)x[x1,x2,...,xn];

%輸出參數(shù)y

%二維目標函數(shù)

y =60-10*x(1)-4*x(2)+x(1)*x(1)+x(2)*x(2)-x(1)*x(2);

end

第二部分:求解最優(yōu)步長函數(shù) ? 不需要更改!!!

function a=OptStep(x,S)

%一維搜索,求最優(yōu)步長

syms b

x=x+b.*S;

y=ObjFun(x);

Y=diff(y); %求導(dǎo),導(dǎo)數(shù)為0的點,即為所求最優(yōu)步長

a=solve(Y==0);

a=double(a);

end

第三部分:主體程序,根據(jù)自己需求,更改函數(shù)中的初始迭代點,收斂精度,梯度,梯度的模以及里面的目標函數(shù)!!!

function [X,F]=GradientMethod

%梯度法,又稱為最速下降法

%X是最優(yōu)解

%F是最優(yōu)解函數(shù)值

%% 第一步:給定初始迭代點x,收斂精度err,k=1

k=1;

x(:,k)=[0;0];

err=0.001;

syms x1 x2

f=60-10*x1-4*x2+x1*x1+x2*x2-x1*x2; %目標函數(shù)

%% 第二步:計算梯度和模并取搜索方向

FG=gradient(f,[x1 x2]); %f的梯度

fg=sqrt(FG(1)^2+FG(2)^2); %梯度的模

while(1)

S=-double(subs(FG,[x1,x2],x(:,k)')); %搜索方向

%% 第三步:進行收斂判斷

fgvalue=double(subs(fg,[x1,x2],x(:,k)'));

if fgvalue<=err

X=x(:,k);

F=ObjFun(X);

break

else

%% 第四步求最優(yōu)步長以及求新迭代點

a=OptStep(x(:,k),S);

x(:,k+1)=x(:,k)+a.*S;

k=k+1;

end

end

end

ok,直接在命令窗口上運行 ?[X,F]=GradientMethod ? 就ok啦,看我不上傳到資源上,索要積分,直接公開代碼,點個贊,給個評論唄。

總結(jié)

以上是生活随笔為你收集整理的梯度算法的matlab程序,基于MATLAB的梯度法源代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。