1. 關於BP神經網路的
樣本數據越多越准確不錯,然而數據越多,網路越復雜,需要訓練的次數越來越多,所以收斂的越來越慢,所以可能訓練500次都達不到精度,你可以適當增大學習率,會變快一些。
2. 求一謝Matlab的編程例題,是關於BP神經網路的PID溫度控制。 請發送到[email protected]中。
其實只需要PID參數能夠順利確定就行了,這里有個程序,你試試看
close all
clear all
clc
tic
%初始化
x=[0;0;0];
xiteP=0.4;
xiteI=0.3;
xiteD=0.4;
K=0.15;%很關鍵,越大,快速性越好,但超調量大,甚至不穩定。
wkp_1=rand;
wki_1=rand;
wkd_1=rand;
error_1=0;
error_2=0;
y_1=0;
y_2=0;
y_3=0;
u_1=0;
u_2=0;
u_3=0;
ts=0.001;%采樣時間
for k=1:1000
time(k)=k*ts;
rin(k)=1.0*sign(sin(2*2*pi*k*ts)); %參考信號rin(k)=1.0*sgn(sin(4*pi*t))
yout(k)=0.368*y_1+0.26*y_2+0.1*u_1+0.632*u_2;%被控對象y(k)=0.368y(k-1)+0.26y(k-2)+0.1u(k-1)+0.632
error(k)=rin(k)-yout(k);
%偏差和控制量求取
x(1)=error(k)-error_1; %P
x(2)=error(k); %I
x(3)=error(k)-2*error_1+error_2; %D
wkp(k)=wkp_1+xiteP*error(k)*u_1*(2*error(k)-error_1);
wki(k)=wki_1+xiteI*error(k)*u_1*(2*error(k)-error_1);
wkd(k)=wkd_1+xiteD*error(k)*u_1*(2*error(k)-error_1);
wadd(k)=abs(wkp(k))+abs(wki(k))+abs(wkd(k));
w11(k)=wkp(k)/wadd(k);
w22(k)=wki(k)/wadd(k);
w33(k)=wkd(k)/wadd(k);
w=[w11(k),w22(k),w33(k)];
u(k)=u_1+0.15*w*x;
%輸入限幅
if u(k)>10
u(k)=10;
end
if u(k)<-10
u(k)=-10;
end
%更新參數
error_2=error_1;
error_1=error(k);
u_3=u_2;
u_2=u_1;
u_1=u(k);
y_3=y_2;
y_2=y_1;
y_1=yout(k);
wkp_1=wkp(k);
wki_1=wki(k);
wkd_1=wkd(k);
end
figure
plot(time,rin,'b',time,yout,'r')
title('跟蹤效果圖');
xlabel('time(s)');
ylabel('rin,yout');
figure
subplot(2,1,1);
plot(time,error)
title('偏差曲線');
xlabel('time(s)');
ylabel('error');
hold on
subplot(2,1,2);
plot(time,u)
title('控制曲線');
xlabel('time(s)');
ylabel('u');
hold on
toc
3. 設計一個BP神經網路分類器進行分類,輸入向量為P=(1 -1 -2 -4;2 1 1 0),輸出向量為T=(0 1 1 0)
y =
0.6544 0.6499 0.6500 0.6499
是預測的輸出變數
4. 對如下BP神經網路,寫出它的計算公式(含學習公式),並對其初始權值以及樣本x1=1,x
5. BP神經網路回歸的問題
請問一下,如何得到R方和RMSE?我是通過公式計算的,但是,算出來的R2全都是0.999啊
6. BP神經網路的問題
隱層節點數一般大於等於輸入層節點數。訓練演算法Traingdm 可以改成Trainlm等其他演算法。
7. BP神經網路的幾個簡單問題
1.一般你可以自來己嘗試下源,我最近也在嘗試,隱層用tansig是比較理想的,輸出層要自己嘗試的,如用purlin是輸出任意值,logsig很多書也是推崇的,將輸出值限定在【0,1】中,我一般都用tansig.
2.trainlm是一種訓練方法,使用的話收斂很快很快,相比的話traingd收斂很慢很慢。優勢traingd要訓練1000epochs,而trainlm只要訓練5epochs就夠了