給出乙個非線性的函式,建立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是一種多層前饋神經網路,由輸入層 隱含層和輸出層組成。層與層之間有兩種訊號在流動 一種是從輸入流向輸出的工作訊號,是輸入和權值的函式 另一種是輸入流向輸出的訊號,即誤差。隱...