在使用2022b版本matlab进行bp神经网络预测,发现在2016a版本可以正常运行的代码在2022b无法运行
报错为:
%读取数据
input=rand(2,1000);
output=input(1,:).*input(2,:);
%训练集,测试集
input_train=input(:,1:900);
output_train=output(1:900);
input_test=input(:,951:end);
output_test=output(951:end);
%数据归一化
[inputn,inputs]=mapminmax(input_train,0,1);%归一化至(0,1)区间
[outputn,outputs]=mapminmax(output_train);
inputn_test=mapminmax('apply',input_test,inputs);%inputs记录映射信息
%构建bp神经网络
net=newff(inputn,outputn,8)%view(net)查看网络
%网络参数
net.trainparam.epochs=1000%训练次数
net.trainparam.lr=0.01%学习效率
net.trainparam.goal=0.000001%训练目标最小误差
%net.dividefcn='';
%bp神经网络训练
net=train(net,inputn,outputn);
%bp神经网络测试
an=sim(net,inputn_test);%用训练好的模型进行仿真
test_simu=mapminmax('reverse',an,outputs);%预测结果反归一化
error=test_simu-output_test;%预测值与真实值的误差
以下答案引用自GPT-3大模型,请合理使用:
修改意见!
答:报错的意思是matlab从2016a版本到2022b版本的变化,使得训练参数和输入输出格式存在差异。这里的问题是需要将训练参数进行修改,并且确定输入输出的格式。
代码修改意见:
1.net.trainParam.epochs=1000; 改为 net.trainParam.epochs=100000,将训练次数增加,以适应bp神经网络的训练要求。
2.net.trainParam.lr=0.01; 改为 net.trainParam.lr=0.001,将学习效率降低,以适应bp神经网络的训练要求。
3.mapminmax(input_train,0,1); 改为 mapminmax(input_train); 将输入数据归一化至(-1,1),以适应bp神经网络的输入数据要求。
4.mapminmax('apply',input_test,inputs); 改为 mapminmax('apply',input_test,inputs,{0,1}); 将测试数据归一化至(0,1),以适应bp神经网络的输入数据要求。
如果我的回答解决了您的问题,请采纳我的回答
不知道你这个问题是否已经解决, 如果还没有解决的话: