㈠ matlab bp神经网络 精度低
首先是我不知道你用的matlab是什么版本。
如果用的2010以后的版本,那么你这样初始化神经网络一定会报警告。
2010版以后初始化神经网络的语句是这样的
net = newff(p, t, 7);
输出层不需要自己去告诉系统。
我想知道的第二个问题,是你的输出层函数是否需要使用logsig。如果使用purelin,那么你大可不必去归一化。后面我会告诉你原因。
你手动指定了训练次数,但是学习率0.01这个数值不知道你从哪里找到的。我可能会选择高一点的学习率,最高我用过0.25.
训练函数你也是手动指定的,这个是需要的么?如果不需要,对于7个神经节点,完全可以使用trainlm,这样你也不需要这么多的训练次数。
下面说一下2010以后的matlab中,神经网络训练增加的一个功能。在初始化神经网络以后,有一个默认的dividing function,将训练样本中的一部分用来校验神经网络性能,以防止过度训练。那么这个参数可能会导致训练不充分。在初始化神经网络以后,需要做的工作是设定net.divideFcn = '';用来去掉这个分配函数。
如果你需要更改你的transfer function,那么可以在net.layers{2}.transferFcn = 'logsig'将输出层传输函数手动修改。
那么,我使用全默认设置,没有进行归一化处理,获得的结果是这样的。
这个就是把你的t和训练后的神经网络计算的结果放在一起。结果已经很不错了。
如过我去掉了分配函数,那么神经网络就会一直训练到训练次数上限或者达到目标值。165次训练后,误差值是1.77e-19(误差使用mean squared error计算),结果在这里贴出来已经没意义了,因为几乎没有误差。
如果你还有问题,那么跟我细聊一下。
㈡ 如何提高bp神经网络的预测精度啊
跟你的预测对象有很大关系。
1. 根据你的预测对象的特性选取合适的输入层、输出层和隐层神经元数目。
2. 选择合适的神经网络训练函数。
3. 保证足够的训练样本数据,并且确保这个训练样本数据有足够的精度能够反映需要预测的对象的特性。
㈢ 我的BP神经网络训练一直达不到要求,要怎样修改才能达到要求
net=init(net);不用这一句,把‘logsig‘改成“tansig”,第一个,同样,把第二个改成’purelin‘
建议你把’trainrp‘改成’trainlm“,试试!
㈣ BP神经网络训练精度保持为0。
你当时没有保存曲线,现在就没有了,不妨重新预测一遍。在R2009的NN工具箱中,数据被自动分成training set、validation set 及test set 三部分,training set是训练样本数据,validation set是验证样本数据,test set是测试样本数据,这样这三个数据集是没有重叠的。在训练时,用training训练,每训练一次,系统自动会将validation set中的样本数据输入神经网络进行验证,在validation set输入后会得出一个误差(不是网络的训练误差,而是验证样本数据输入后得到的输出误差,可能是均方误差),而此前对validation set会设置一个步数,比如默认是6echo,则系统判断这个误差是否在连续6次检验后不下降,如果不下降或者甚至上升,说明training set训练的误差已经不再减小,没有更好的效果了,这时再训练就没必要了,就停止训练,不然可能陷入过学习。所以validation set有个设置步数,作用就在这里。在你的10组样本中,不可能全部作为训练样本的,还要有测试样本和验证样本。根据matlab版本的不同,具体怎么分配样本也不一样,像R2009应该是自动分配的。
㈤ MATLAB中BP神经网络的训练算法具体是怎么样的
先用newff函数建立网络,再用train函数训练即可。
1)正向传播:输入样本->输入层->各隐层(处理)->输出层
注1:若输出层实际输出与期望输出(教师信号)不符,则转入2)(误差反向传播过程)
2)误差反向传播:输出误差(某种形式)->隐层(逐层)->输入层
其主要目的是通过将输出误差反传,将误差分摊给各层所有单元,从而获得各层单元的误差信号,进而修正各单元的权值(其过程,是一个权值调整的过程)。
BP算法实现步骤(软件):
1)初始化
2)输入训练样本对,计算各层输出
3)计算网络输出误差
4)计算各层误差信号
5)调整各层权值
6)检查网络总误差是否达到精度要求
满足,则训练结束;不满足,则返回步骤2)
注:改进算法—增加动量项、自适应调整学习速率(这个似乎不错)及引入陡度因子。
㈥ bp神经网络 Matlab实现总是达不到精度,请问应该要怎么弄
更改参数,如修改学习率、更换训练函数如trainlm等。
更改结构:增加隐层节点数、甚至增加隐层数,可以做成双隐层。
BP(Back Propagation)神经网络是86年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hidden layer)和输出层(output layer)。
㈦ matlab训练BP神经网络,nntool中如何设置,权值,激活函数的修改等问题
net1=newff(minmax(pX),[16,1],{'tansig','purelin'},'trainlm');
这个是激活函数的语句,但是一般不需要修改。
BP神经网络是计算机自主学习的一个过程,程序员要做的就是确定隐含层神经元的数量以及训练精度,训练步数以及学习速率等参数。
隐含层神经元数量的公式:
㈧ BP神经网络的精度低,怎么解决
建议用RBP神经网络进行训练。使用方法:
x=-1:0.1:5;
y=-1:0.1:5;
z=x.^2.*y-0.1*x+2*y;
net=newrbe([x;y],z); %创建一个RBF网络
t=sim(net,[x;y]);%仿真未经训练的网络net
plot3(x,y,z,'rd');hold on
plot3(x,y,t,'b-');
㈨ 如何提高BP神经网络模型的预测精度
直接调用归一化函数就可以啦,不会的话看一下这个帖子吧:遗传算法优化BP神经网络的案例(matlab代码分享)
http://www.ilovematlab.cn/forum. ... &fromuid=679292
希望对你有帮助!
㈩ 用MATLAB中神经网络工具箱固有函数建立的BP网络,训练精度始终达不到,而且误差也大,该如何解决
除了楼上的方法,还可以修改下神经网络的初始权值,这方面的方法很多,可以改变下初始参数的取值范围,或者用遗传算法搜索下。另外,改变神经网络的训练函数是十分有效的,比如trainscg什么的,还有好几个记不得了,自己找找看!