『壹』 在看了案例二中的BP神經網路訓練及預測代碼後,我開始不明白BP神經網路究竟能做什麼了。。。 程序最後得到
網路抄的訓練過程與使用過程了兩碼事。
比如BP應用在分類,網路的訓練是指的給你一些樣本,同時告訴你這些樣本屬於哪一類,然後代入網路訓練,使得這個網路具備一定的分類能力,訓練完成以後再拿一個未知類別的數據通過網路進行分類。這里的訓練過程就是先偽隨機生成權值,然後把樣本輸入進去算出每一層的輸出,並最終算出來預測輸出(輸出層的輸出),這是正向學習過程;最後通過某種訓練演算法(最基本的是感知器演算法)使得代價(預測輸出與實際輸出的某范數)函數關於權重最小,這個就是反向傳播過程。
您所說的那種不需要預先知道樣本類別的網路屬於無監督類型的網路,比如自組織競爭神經網路。
『貳』 BP神經網路做預測時,一定要歸一化嗎,怎樣反歸一化得到最後的結果
當數據差距很大的時候,必須要歸一化!
pnt=mapminmax('apply',pt,ps)或=mapstd('apply',pt,ps)
模擬後反歸一化格式則為:
out=mapminmax('reverse',An,ts)或=mapstd('reverse',An,ts);
其中An為sim函數的輸 出
『叄』 神經網路bp演算法可以對樣本進行預測,具體是預測什麼
關於神經網路(matlab)歸一化的整理
由於採集的各數據單位不一致,因而須對數據進行[-1,1]歸一化處理,歸一化方法主要有如下幾種,供大家參考:(by james)
1、線性函數轉換,表達式如下:
y=(x-MinValue)/(MaxValue-MinValue)
說明:x、y分別為轉換前、後的值,MaxValue、MinValue分別為樣本的最大值和最小值。
2、對數函數轉換,表達式如下:
y=log10(x)
說明:以10為底的對數函數轉換。
3、反餘切函數轉換,表達式如下:
y=atan(x)*2/PI
歸一化是為了加快訓練網路的收斂性,可以不進行歸一化處理
歸一化的具體作用是歸納統一樣本的統計分布性。歸一化在0-1之間是統計的概率分布,歸一化在-1--+1之間是統計的坐標分布。歸一化有同一、統一和合一的意思。無論是為了建模還是為了計算,首先基本度量單位要同一,神經網路是以樣本在事件中的統計分別幾率來進行訓練(概率計算)和預測的,歸一化是同一在0-1之間的統計概率分布;
當所有樣本的輸入信號都為正值時,與第一隱含層神經元相連的權值只能同時增加或減小,從而導致學習速度很慢。為了避免出現這種情況,加快網路學習速度,可以對輸入信號進行歸一化,使得所有樣本的輸入信號其均值接近於0或與其均方差相比很小。
歸一化是因為sigmoid函數的取值是0到1之間的,網路最後一個節點的輸出也是如此,所以經常要對樣本的輸出歸一化處理。所以這樣做分類的問題時用[0.9 0.1 0.1]就要比用[1 0 0]要好。
但是歸一化處理並不總是合適的,根據輸出值的分布情況,標准化等其它統計變換方法有時可能更好。
關於用premnmx語句進行歸一化:
premnmx語句的語法格式是:[Pn,minp,maxp,Tn,mint,maxt]=premnmx(P,T)
其中P,T分別為原始輸入和輸出數據,minp和maxp分別為P中的最小值和最大值。mint和maxt分別為T的最小值和最大值。
premnmx函數用於將網路的輸入數據或輸出數據進行歸一化,歸一化後的數據將分布在[-1,1]區間內。
我們在訓練網路時如果所用的是經過歸一化的樣本數據,那麼以後使用網路時所用的新數據也應該和樣本數據接受相同的預處理,這就要用到tramnmx。
下面介紹tramnmx函數:
[Pn]=tramnmx(P,minp,maxp)
其中P和Pn分別為變換前、後的輸入數據,maxp和minp分別為premnmx函數找到的最大值和最小值。
(by terry2008)
matlab中的歸一化處理有三種方法
1. premnmx、postmnmx、tramnmx
2. restd、poststd、trastd
3. 自己編程
具體用那種方法就和你的具體問題有關了
(by happy)
pm=max(abs(p(i,:))); p(i,:)=p(i,:)/pm;
和
for i=1:27
p(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:)));
end 可以歸一到0 1 之間
0.1+(x-min)/(max-min)*(0.9-0.1)其中max和min分別表示樣本最大值和最小值。
這個可以歸一到0.1-0.9
『肆』 求助檢查BP神經網路預測程序
問題:
1:隱含層的節點數應該小於訓練樣本數(你這里et_1=newff(minmax(P),[150,1],{'tansig','purelin'},'traingdm')中的150遠遠大於訓練樣本數10個(1989:2003))
2:如果把時間當做樣本輸入的話,這是不太合適的。如果那樣還不如用時間序列求解。而且在現在的這個程序中還會會出現ynhj88311說的那種情況。(這里還應該做歸一化處理更好)
clc
clear
date=1988:2003;
P0=[0.10930.11100.11270.11410.11540.11640.11710.11750.11780.11790.11790.11780.11790.11800.11820.1186];%樣本數據這里數據在0~1之間就不用歸一化處理了
plot(date,P0,'b+');%原數據隨時間變化的曲線
holdon
title('原數據曲線圖')
fori=1:13
P(:,i)=P0(i:i+2);
T(:,i)=P0(i+3);
end
%創建一個新的前向神經網路
net_1=newff(minmax(P),[10,1],{'tansig','purelin'},'traingdm')
%設置訓練參數
net_1.trainParam.show=1;
net_1.trainParam.lr=0.2;
net_1.trainParam.mc=0.9;
net_1.trainParam.epochs=10000000;
net_1.trainParam.goal=1e-10;
%調用TRAINGDM演算法訓練BP網路
[net_1,tr]=train(net_1,P,T);
%對BP網路進行模擬
A=sim(net_1,P)
E=T-A;
MSE=mse(E)
P2001=sim(net_1,[0.11790.11780.1179]');
P2002=sim(net_1,[0.11780.11790.1180]');
P2003=sim(net_1,[0.11790.11800.1182]');
p2=P0(14:16)';
yuce2004=sim(net_1,p2)
figure
Y=[A(1,:),P2001,P2002,P2003,yuce2004];
Date=[date,2004];
plot(Date,Y,'r+')
『伍』 BP神經網路做數據預測,預測出來結果感覺不對,求大神指導
作預測,曲線要擬合。看理論值與實際的相關程度。你的相關系數肯定小,難以有理想結果!
『陸』 如何用BP神經網路實現預測
BP神經網路具有任意復雜的模式分類能力和優良的多維函數映射能力,解決了簡單版感知器不能解決的異權或(Exclusive OR,XOR)和一些其他問題。從結構上講,BP網路具有輸入層、隱藏層和輸出層;從本質上講,BP演算法就是以網路誤差平方為目標函數、採用梯度下降法來計算目標函數的最小值。
『柒』 該代碼為基於bp神經網路的預測演算法怎麼看
BP(Back Propagation)神經網路是1986年由Rumelhart和McCelland為首的科學家小組提出,是一種按誤差逆傳播演算法訓練的多層前饋網路,是目前應用最廣泛的神經網路模型之一。BP網路能學習和存貯大量的輸入-輸出模式映射關系,而無需事前揭示描述這種映射關系的數學方程。它的學習規則是使用最速下降法,通過反向傳播來不斷調整網路的權值和閾值,使網路的誤差平方和最小。BP神經網路模型拓撲結構包括輸入層(input)、隱層(hidden layer)和輸出層(output layer)。
上傳的m文件里是一個電力系統負荷預測的實例,用的是最簡單的BP演算法,你可以參考。
很抱歉,回答者上傳的附件已失效