神经网络预测值为何全相同

2024-05-09

1. 神经网络预测值为何全相同

最大的可能性是没有归一化。具体原因见下:
下面这个是经典的Sigmoid函数的曲线图:


如果不进行归一化,则过大的输入x将会导致Sigmoid函数进入平坦区,全部趋近于1,即最后隐层的输出全部趋同。输出层是个purelin,线性组合后的输出层输出当然也全是几乎相同的了。

使用matlab进行归一化通常使用mapminmax函数,它的用法:
[Y,PS] = mapminmax(X,YMIN,YMAX)——将数据X归一化到区间[YMIN,YMAX]内,YMIN和YMAX为调用mapminmax函数时设置的参数,如果不设置这两个参数,这默认归一化到区间[-1, 1]内。标准化处理后的数据为Y,PS为记录标准化映射的结构体。我们一般归一化到(0,1)区间内。希望采纳哦!http://zhidao.baidu.com/question/1882929579529248508

神经网络预测值为何全相同

2. 如何用神经网络进行时间序列预测

神经网络是可以用来预测时间序列。例如神经网络人口预测。已知1990至2009年的某地区人口数[11 28 30 42 44 56 49 60 50 63 56 74 76 65 92 105 124 117 132 128]。预测2010-2016年的某地区人口数。
具体实施过程:
%已知数据
t=1990:2009;
x=[11 28 30 42 44 56 49 60 50 63 56 74 76 65 92 105 124 117 132 128];
 % 自回归阶数
lag=3; 
%预测步数为fn
fn=length(t);
%输出数据
[f_out,iinput]=BP(x,lag,fn);   %BP()神经网络预测函数 
[x' iinput']
R2=corrcoef(x,iinput)

%预测年份或某一时间段
%t1=2015:2016;
t1=length(x)+1:length(x)+7;
%预测步数为fn
fn=length(t1);     
[f_out,iinput]=BP(x,lag,fn);
P=vpa(f_out,5);
%预测数据
t1=2010:2016;
[t1' P']
% 画出预测图
figure(6),plot(t,x,'b*-'),hold on
plot(t(end):t1(end),[iinput(end),f_out],'rp-'),grid on
title('BP神经网络预测某地区人口数')
xlabel('年份'),ylabel('人口数');
legend('2009-2014年人口变化数','2014-2016年人口预测数');