⑴ 我的BP神经网络训练一直达不到要求,要怎样修改才能达到要求
net=init(net);不用这一句,把‘logsig‘改成“tansig”,第一个,同样,把第二个改成’purelin‘
建议你把’trainrp‘改成’trainlm“,试试!
⑵ 一个关于BP神经网络的问题,matlab中神经网络工具箱的初始权值和阀值是
训练BP神经网络所采取的随机初始参数确实是随机的,在训练过程中这些参数和权值都会朝着同一个大方向进行修正。例如你用BP神经网络来拟合曲线,找到输入值与输出值之间的线性规律,那么在训练的过程中这个拟合的曲线会不断的调整其参数和权值直到满足几个预设条件之一时训练停止。虽然这个训练出来的结果有时候会有一定误差,但都在可以接受的范围内。
缩小误差的一个方法是需要预先设置初始参数,虽然每次依然会得到不一样的模型(只要参数是随机修正的),但不同模型之间的差距会很小。另外可以反复训练,找到一个自己觉得满意的模型(可以是测试通过率最高,可以是平均结果误差值最小)。
至于你说别人怎么检查你的论文结果,基本上都是通过你的算法来重建模型,而且还不一定都用matlab来做,即便是用同样的代码都会出现不同的结果,何况是不同的语言呢?其实验算结果最重要的是看测试时的通过率,例如在对一组新的数据进行测试(或预测)时,通过率达到95%,别人用其他的方式重建了你的模型也得到这样的通过率,那么你的算法就是可行的。注意,在计算机专业的论文里面大家看重的不是代码,而是算法。
补充一点:只要你训练好了一个神经网络可以把这个神经网络以struct形式保存,这样这个网络可以被反复使用,且每次对同一组测试数据的预测结果都会一样。你也可以当做是检测论文可行性的工具。
⑶ BP神经网络中初始权值和阈值的设定
首先需要了解BP神经网络是一种多层前馈网络。以看一下在matlab中BP神经网络的训练函数,有梯度下降法traingd,弹性梯度下降法trainrp,自适应lr梯度下降法traingda等。
因为初始值(初始权值和阀值)都在x这个向量中,x(n,1)的长度n为:n=inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum
其中inputnum*hiddennum是输入层到隐含层的权值数量,hiddennum是隐含层神经元个数(即隐含层阀值个数),hiddennum*outputnum是隐含层到输出层权值个数,outputnum是输出层神经元个数(即输出层阀值个数)。
结构
BP网络是在输入层与输出层之间增加若干层(一层或多层)神经元,这些神经元称为隐单元,它们与外界没有直接的联系,但其状态的改变,则能影响输入与输出之间的关系,每一层可以有若干个节点。
BP神经网络的计算过程由正向计算过程和反向计算过程组成。正向传播过程,输入模式从输入层经隐单元层逐层处理,并转向输出层,每~层神经元的状态只影响下一层神经元的状态。如果在输出层不能得到期望的输出,则转入反向传播,将误差信号沿原来的连接通路返回,通过修改各神经元的权值,使得误差信号最小。
以上内容参考:网络-BP神经网络
⑷ BP神经网络的Training Parameters中各个参数都是什么意思啊
max_fail 最大失败步数,如设置为100,则训练到100步还没成功也会停止训练
mem_rec
min_grad 最小梯度,梯度下降法中出现,设置一个值之后,如果训练下降梯度不达此值训练也只能停止
mu 参数μ
mu_dec
mu_inc
mu_max
show 显示步数,如果设为50,则运行后会每隔50步显示一下运行结果
time 训练时间限制,同max_fail,min_grad 作用一样
⑸ BP神经网络中隐藏层节点个数怎么确定最佳
神经网络算法隐含层的选取:构造法,删除法,黄金分割法。
首先在[a,b]内寻找理想的隐含层节点数,这样就充分保证了网络的逼近能力和泛化能力,为满足高精度逼近的要求,再按照黄金分割原理拓展搜索区间;
即得到区间[b,c](其中b=0.619*(c-a)+a),在区间[b,c]中搜索最优,则得到逼近能力更强的隐含层节点数,在实际应用根据要求,从中选取其一即可。
计算过程
BP神经网络的计算过程由正向计算过程和反向计算过程组成。正向传播过程,输入模式从输入层经隐单元层逐层处理,并转向输出层,每一层神经元的状态只影响下一层神经元的状态。如果在输出层不能得到期望的输出,则转入反向传播,将误差信号沿原来的连接通路返回,通过修改各神经元的权值,使得误差信号最小。
以上内容参考:网络-BP神经网络
⑹ MATLAB神经网络BP,误差超大,怎样调试是误差更接近目标值主要调试哪些参数谢谢。。。
被推荐的答案倒是没说错,基本上和没说一样…… 就好比问怎么安排时间,回答一个“合理安排时间”……
误差大,第一步需要尝试的是做归一化处理。有线性归一化,有对数函数归一化等等,这个你可以去网上搜索数据归一化方法,有相关的代码,应该。
第二部需要做出的改动是隐层节点数量,如果节点数量太多,那么结果的随机性就会很大,如果太少,那么复杂数据的规律计算不出来。多少层节点最合适,这个目前除了一个一个试没有更好的办法。但是你会发现每一个相同的结构计算出的结果却不尽相同,这个时候就需要考虑后续的问题。
第三步尝试,变换transfer function。麻烦你查查字典,因为我不是用中文学的神经网络。我姑且翻译成传输函数。传输函数在matlab中内建了3中 pureline logsig tansig。分别有不同的应用范围。因为没看到你的数据,我也不清楚具体应该推荐你用哪一种。不过你可以去网上搜索一下三种传输函数的特点。
一般情况下,前三步已经可以解决问题了。
如果不行,那么你需要尝试的就是比较高级的内容了。尝试一下,不行再追问。
⑺ BP神经网络 运行的步骤太少就停了,是参数设置的问题吗
不是运行太少而停止,是达到了你的要求。
net.trainParam.goal=0.01;
精度调高点试下
⑻ BP神经网络模型各个参数的选取问题
样本变量不需要那么多,因为神经网络的信息存储能力有限,过多的样本会造成一些有用的信息被丢弃。如果样本数量过多,应增加隐层节点数或隐层数目,才能增强学习能力。
一、隐层数
一般认为,增加隐层数可以降低网络误差(也有文献认为不一定能有效降低),提高精度,但也使网络复杂化,从而增加了网络的训练时间和出现“过拟合”的倾向。一般来讲应设计神经网络应优先考虑3层网络(即有1个隐层)。一般地,靠增加隐层节点数来获得较低的误差,其训练效果要比增加隐层数更容易实现。对于没有隐层的神经网络模型,实际上就是一个线性或非线性(取决于输出层采用线性或非线性转换函数型式)回归模型。因此,一般认为,应将不含隐层的网络模型归入回归分析中,技术已很成熟,没有必要在神经网络理论中再讨论之。
二、隐层节点数
在BP 网络中,隐层节点数的选择非常重要,它不仅对建立的神经网络模型的性能影响很大,而且是训练时出现“过拟合”的直接原因,但是目前理论上还没有一种科学的和普遍的确定方法。 目前多数文献中提出的确定隐层节点数的计算公式都是针对训练样本任意多的情况,而且多数是针对最不利的情况,一般工程实践中很难满足,不宜采用。事实上,各种计算公式得到的隐层节点数有时相差几倍甚至上百倍。为尽可能避免训练时出现“过拟合”现象,保证足够高的网络性能和泛化能力,确定隐层节点数的最基本原则是:在满足精度要求的前提下取尽可能紧凑的结构,即取尽可能少的隐层节点数。研究表明,隐层节点数不仅与输入/输出层的节点数有关,更与需解决的问题的复杂程度和转换函数的型式以及样本数据的特性等因素有关。
⑼ BP神经网络的mu参数是学习率么训练结果val fail中的validation check=6什么意思
神经网络的样本若输入网络,默认情况下会将样本随即分为3类:训练样本,确认样本和测试样本。确认检查值默认是6,它的意思是指随着网络利用训练样本进行训练的过程中,确认样本的误差曲线连续6次迭代不在下降。这时训练终止(这只是训练终止条件之一,满足任一终止条件,训练过程都将终止)深层含义你可以这样理解,如果随着网络的训练,确认样本的误差已经基本不在减小,甚至增大,那么就没有必要再去训练网络了,因为继续训练下去的话,在利用测试样本进行测试网络的话,测试样本的误差将同样不会有所改善,甚至会出现过度拟合的现象。validation checks已经达到设置的值了,所以停止训练了,如果网络在连续max_fail epochs后不能提高网络性能,就停止训练。
有三种方法解决这个问题:
1 提高validation checks的数值,比如设置net.trainParam.max_fail = 200;其实这等于自己糊弄自己严重不推荐,出现停止训练,就是因为被训练的网络已经过拟合,停下来是应该的。但6的确有点小,建议改成10到20之间的数
2 修改被训练的网络,比如说再加一个隐藏层试试
3 如果是数据太相近的问题,试试选择用divideind