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就够了