BP學習演算法的MATLAB例程

2021-10-10 12:56:42 字數 3014 閱讀 3622

close all;

clear all;

clc;%%

%%%%

%%%%

%%%%

%%%%

%%%%

%%%%

%% bp學習演算法的matlab例程 %%%

%%%%

%%%%

%%%%

%%%%

%%%%

%%%%

%%%%說明:取k為學習步長,n為輸入樣本數,cells為神經元個數,times為學習次數,e為均方誤差 %

% 取神經元激勵函式f

(x)=1/

(1+e^(

-x))

,y=sinx為bp網路學習函式 %%*

****

****

****

****

****

****

****

****

*** 初始化各引數 ***

****

****

****

****

****

****

***%

k=0.05

;%取學習步長為0.05

n=30

;%輸入樣本數n

cells=6;

%取6個神經元

times=

3000

;%設定總學習次數

%選取樣本點x=(

linspace(0

,2*pi,n));

t=sin

(x);

%樣本需要學習的函式t

w1=rand

(cells,1)

*k;%取第一層連線權係數初始值為隨機量

w2=rand(1

,cells)

*k;%取第二層連線權係數初始值為隨機量

yw1=

rand

(cells,1)

*k;%取第一層閾值初始值為隨機量

yw2=rand*k;

%取第二層閾值初始值為隨機量

y=rand(1

,n)*k;

%取輸出值初始值為隨機量

counts=1;

%計數值初始化

e=zeros(1

,times)

;%均方差初始值設為0%*

****

****

****

****

****

****

****

****

*** 學習過程 ***

****

****

****

****

****

****

****

**%for i=

1:times

ei=0;

for a=1:n

net1=w1*

x(a)

-yw1;

out=

logsig

(net1)

; net2=w2*out-yw2;

y(a)

=net2;

det2=

t(a)-y

(a);

det1=

((det2*

(w2)')

.*out).*

(1-out)

; w1=w1+det1*

x(a)

*k; w2=w2+

(det2*out)'*k;

yw1=

-det1*k+yw1;

yw2=

-det2*k+yw2;

ei=ei+det2^2/

2;e(i)

=ei;

endif ei<

0.008

%設定學習要求:均方差小於0.008

break

; end

counts=counts+1;

end%**

****

****

****

****

****

****

****

*** 逼近學習曲線 ***

****

****

****

****

****

****

****

*%%逼近曲線

for a=1:n

net1=w1*

x(a)

-yw1;

out=

logsig

(net1)

; net2=w2*out-yw2;

y(a)

=net2;

endsubplot(2

,1,1

);plot

(x,t,

'b-'

,x,y,

'k*-');

legend

('y=sinx曲線'

,'學習曲線');

grid on;

title

('bp學習方法逼近y=sinx**曲線圖');

xlabel

('x軸');

ylabel

('y=sinx');

%誤差曲線

if(countscount=

1:counts;

sum=counts;

else

count=

1:times;

sum=times;

endsubplot(2

,1,2

);plot

(count,e(

1:sum));

grid on;

title

('bp演算法的學習曲線');

xlabel

('迭代次數');

ylabel

('均方誤差'

);

BP演算法解決XOR異或問題MATLAB版

from 用神經網路解決異或問題 clear clcclose ms 4 設定4個樣本 a 0 0 0 1 1 0 1 1 設定輸入向量 y 0,1,1,0 設定輸出向量 n 2 輸入量的個數 m 3 隱層量的個數 k 1 輸出層的個數 w rand n,m 為輸入層到隱層的權值賦初值 v rand...

BP演算法的推導

bp演算法步驟 1 正向傳播 輸入樣本 輸入層 各隱層 處理 輸出層 注1 若輸出層實際輸出與期望輸出 教師訊號 不符,則轉入2 誤差反向傳播過程 2 誤差反向傳播 輸出誤差 某種形式 隱層 逐層 輸入層 其主要目的是通過將輸出誤差反傳,將誤差分攤給各層所有單元,從而獲得各層單元的誤差訊號,進而修正...

BP演算法的理解

目標 通過計算輸出層和期望值之間的誤差 損失函式 來調整網路引數,從而達到誤差最小。bp演算法的本質 就是通過梯度下降法來優化網路引數。梯度下降法的本質 通過迭代的形式,計算目標函式的最小值對應的引數。目標函式在深度學習和機器學習中就是對應的誤差函式 梯度下降法的形式 泰勒公式 泰勒公式一階導數的形...