在用Matlab中的BP神经网络时,2个输入1个输出,程序运行不了,错误很多啊!!高手能不能帮改改,谢谢了~~ 20
%产生训练样本与测试样本P1=ad(1:200,1);P2=ad(1:200,2);%训练样本,每一列为一个样本T1=nd(1:200,1);%训练目标P21=ad(20...
% 产生训练样本与测试样本
P1 = ad(1:200,1);
P2 = ad(1:200,2);% 训练样本,每一列为一个样本
T1 = nd(1:200,1); % 训练目标
P21 = ad(201:319,1);
P22 =ad(201:319,2); % 测试样本,每一列为一个样本
T2 = nd(201:319,1); % 测试目标
%---------------------------------------------------
% 归一化
[PN1,minp,maxp,PN2,minp,maxp,TN1,mint,maxt] = premnmx(P1,P2,T1);
PN21 = tramnmx(P21,minp,maxp);
PN22 =tramnmx(P22,minp,maxp);
TN2 = tramnmx(T2,mint,maxt);
%---------------------------------------------------
% 设置网络参数
NodeNum = 20; % 隐层节点数
TypeNum = 1; % 输出维数
net = newff(minmax(PN1),minmax(PN2),[NodeNum TypeNum],{TF1 TF2});
net.trainParam.show = 20; % 训练显示间隔
net.trainParam.lr = 0.3; % 学习步长 - traingd,traingdm
net.trainParam.mc = 0.95; % 动量项系数 - traingdm,traingdx
net.trainParam.mem_reduc = 1; % 分块计算Hessian矩阵(仅对Levenberg-Marquardt算法有效)
net.trainParam.epochs = 1000; % 最大训练次数
net.trainParam.goal = 1e-8; % 最小均方误差
net.trainParam.min_grad = 1e-20; % 最小梯度
net.trainParam.time = inf; % 最大训练时间
net = train(net,PN1,PN2,TN1); % 训练
YN1 = sim(net,PN1,PN2); % 训练样本实际输出
YN2 = sim(net,PN21,PN22); % 测试样本实际输出
MSE1 = mean((TN1-YN1).^2) % 训练均方误差
MSE2 = mean((TN2-YN2).^2) % 测试均方误差
Y2 = postmnmx(YN2,mint,maxt);
plot(1:length(T2),T2,'r+:',1:length(Y2),Y2,'bo:')
title('+为真实值,o为预测值') 展开
P1 = ad(1:200,1);
P2 = ad(1:200,2);% 训练样本,每一列为一个样本
T1 = nd(1:200,1); % 训练目标
P21 = ad(201:319,1);
P22 =ad(201:319,2); % 测试样本,每一列为一个样本
T2 = nd(201:319,1); % 测试目标
%---------------------------------------------------
% 归一化
[PN1,minp,maxp,PN2,minp,maxp,TN1,mint,maxt] = premnmx(P1,P2,T1);
PN21 = tramnmx(P21,minp,maxp);
PN22 =tramnmx(P22,minp,maxp);
TN2 = tramnmx(T2,mint,maxt);
%---------------------------------------------------
% 设置网络参数
NodeNum = 20; % 隐层节点数
TypeNum = 1; % 输出维数
net = newff(minmax(PN1),minmax(PN2),[NodeNum TypeNum],{TF1 TF2});
net.trainParam.show = 20; % 训练显示间隔
net.trainParam.lr = 0.3; % 学习步长 - traingd,traingdm
net.trainParam.mc = 0.95; % 动量项系数 - traingdm,traingdx
net.trainParam.mem_reduc = 1; % 分块计算Hessian矩阵(仅对Levenberg-Marquardt算法有效)
net.trainParam.epochs = 1000; % 最大训练次数
net.trainParam.goal = 1e-8; % 最小均方误差
net.trainParam.min_grad = 1e-20; % 最小梯度
net.trainParam.time = inf; % 最大训练时间
net = train(net,PN1,PN2,TN1); % 训练
YN1 = sim(net,PN1,PN2); % 训练样本实际输出
YN2 = sim(net,PN21,PN22); % 测试样本实际输出
MSE1 = mean((TN1-YN1).^2) % 训练均方误差
MSE2 = mean((TN2-YN2).^2) % 测试均方误差
Y2 = postmnmx(YN2,mint,maxt);
plot(1:length(T2),T2,'r+:',1:length(Y2),Y2,'bo:')
title('+为真实值,o为预测值') 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询