BP神經網路的函式逼近

2021-10-05 09:39:10 字數 1634 閱讀 5570

給出乙個非線性的函式,建立bp神經網路進行擬合影象,其中隱藏神經元的數目為,可以設定。

%bp神經網路的函式逼近k=2

;x=[-

1:.05:8]

;f=1+sin(k*pi/

2*x)

;%建立bp神經網路結構

%隱藏層為5 未訓練引數

n=10

;net=newff(minmax(x)

,[n,1]

,,'trainlm');

y1=sim(net,x)

;figure;

plot(x,f,

'-',x,y1,

':')

;title(

'要逼近的非線性函式');

xlabel(

'時間');

ylabel(

'原函式和**函式');

%訓練bp神經網路

net.trainparam.epochs=

200;

net.trainparam.goal=

0.2;

net=train(net,x,f)

;y2=sim(net,x)

;figure;

plot(x,f,

'-',x,y1,

':',x,y2,

'--');

title(

'訓練後的網路輸出');

xlabel(

'時間');

ylabel(

'**函式'

);

第一次建立了bp神經網路,tansig和purelin分別是隱藏層神經元啟用函式和輸出層神經元啟用函式,trainlm是訓練函式,但是未經過訓練的網路中權值和閾值是隨機的,所以誤差非常大。

於是開始訓練(取神經元個數n為5)

可以看到,訓練後呈現出來的逼近曲線已經開始逼近原函式了,但是仍然擬合度較低,所以修改n的值為10,再訓練一次。

可以看到,這時的逼近函式已經非常擬合於原函式了,精度達到了一定高度。

參考資料:

matlab的bp神經網路工具箱及其在函式逼近中的應用

補充:bp神經網路工具箱介紹

bp神經網路學習規則是不斷地調整神經網路的權值和偏值,使得網路輸出的均方誤差和最小。下面是關於一些bp神經網路的建立和訓練的名稱:

(1)newff:建立一前饋bp網路(隱含層只有一層)

(2)newcf:建立一多層前饋bp網路(隱含層有多層)

(3)train:訓練乙個神經網路

(4)sim:**乙個神經網路

用BP神經網路逼近正弦函式

網路中設定輸入層與輸出層均為乙個神經元,並且考慮到正弦函式的值域分布情況,我這一次在輸出層中的啟用函式並沒有使用以前常用的sigmod函式,而是採用了線性函式y x 具體實現 如下所示 clc,clear data 3 0.01 3 xsize size data datasize xsize 2 ...

利用BP神經網路逼近函式 Python實現

文章主要參考原文是matlab版本的實現。在此基礎上,利用python實現bp網路對函式 如下 相應部分都有注釋 2018.08.15 啟用函式用的是sigmoid import numpy as np import math import matplotlib.pyplot as plt x np...

BP神經網路

基本bp神經網路演算法包括 訊號的前向傳播 誤差的反向傳播 也即計算實際輸出時按照輸入到輸出的方向進行,權值閾值調整則相反。bp是一種多層前饋神經網路,由輸入層 隱含層和輸出層組成。層與層之間有兩種訊號在流動 一種是從輸入流向輸出的工作訊號,是輸入和權值的函式 另一種是輸入流向輸出的訊號,即誤差。隱...