为什么我的BP神经网络的预测输出结果几乎是一样的呢
展开全部
bp神经网络是有一定缺陷的,比如容易陷入局部极小值,还有训练的结果依赖初始随机权值,这就好比你下一个山坡,如果最开始的方向走错了,那么你可能永远也到不了正确的山脚。可以说bp神经网络很难得到正确答案,也没有唯一解,有些时候只能是更多次地尝试、修改参数,这个更多依赖自己的经验,通俗点说就是“你觉得行了,那就是行了”,而不像1+1=2那样确切。
如果有耐心,确定方法没问题,那么接下来需要做的就是不停地尝试、训练,得到你想要的结果。
另外,我不知道你预测的是什么,是时间序列么?比如证券?这种预测,比较重要的就是输入参数是否合适,这个直接决定了结果精度
如果有耐心,确定方法没问题,那么接下来需要做的就是不停地尝试、训练,得到你想要的结果。
另外,我不知道你预测的是什么,是时间序列么?比如证券?这种预测,比较重要的就是输入参数是否合适,这个直接决定了结果精度
展开全部
最大的可能性是没有归一化。具体原因见下:
下面这个是经典的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)区间内。
下面这个是经典的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)区间内。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询