永发信息网

用matlab做BP神经网络,进行数据预测,全部都为正数,但是反归一化后得到负数是什么原因?

答案:2  悬赏:50  手机版
解决时间 2021-03-21 14:00
  • 提问者网友:疯子也有疯子的情调
  • 2021-03-21 01:43
这是程序
clc
clear
[filename,pathname]=uigetfile('E:\lunwen\Matlab wenjian\t1.xls');
file=[pathname filename];
x=xlsread(file);
input_train=[x(:,1),x(:,2),x(:,3),x(:,4),x(:,5);]'
output_train= x(:,6)',
[filename,pathname]=uigetfile('E:\lunwen\Matlab wenjian\t2.xls');
file=[pathname filename];
x=xlsread(file);
input_test=[x(:,1),x(:,2),x(:,3),x(:,4),x(:,5);]'
output_test= x(:,6)',
[inputn,inputps]=mapminmax(input_train,0,1);
[outputn,outputps]=mapminmax(output_train,0,1);
net=newelm(minmax(inputn),[5,1],{'logsig','tansig'},'trainlm');
net.trainParam.epochs=3000;
net.trainParam.lr=0.1;
net.trainParam.goal=0.0001;
net=train(net,inputn,outputn);
inputn_test=mapminmax('apply',input_test,inputps);
an=sim(net,inputn_test);
BPoutput=mapminmax('reverse',an,outputps);
得到的BPoutput中存在负数
最佳答案
  • 五星知识达人网友:舍身薄凉客
  • 2021-03-21 02:26
net=newelm(minmax(inputn),[5,1],{'logsig','tansig'},'trainlm');
这是老版用法,建议你用新版用法。
net=newelm(P,T,S1);
输出层也用tansig吗,这可能会有负数。

Elman神经网络是一种带有反馈的两层BP网络结构,其反馈连接是从隐含层的输出到其输入端。这种反馈方式使得Elman网络能够探测和识别时变模式。
其隐含层又称为反馈层,神经元的传递函数为tansig,输出层为线性层,传递函数为purelin。这种特殊的两层网络可以任意精度逼近任意函数,唯一的要求是其隐含层必须具有足够的神经元数目。隐含层神经元数越多,则逼近复杂函数的精度就越高。
全部回答
  • 1楼网友:西风乍起
  • 2021-03-21 03:40
%预测输出反归一化 ynn=mapminmax('reverse',yuce,outputps);
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯