matlab_BP

(1)    net=newff(P,T,S)或者net=newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF)

P:输入参数矩阵(R*Q1)

T:目标参数矩阵(SN*Q2)

S:N-1个隐含层的数目(从S(i)到S(N-1)),输出层的单元数目取决于T,默认为空矩阵。

TF:相关层的传递函数,默认隐含层为tansig函数,输出层为purelin函数。

BTF:BP神经网络学习训练函数,默认值为trainlm函数。

BLF:权重学习函数,默认值为learngdm。

PF:性能函数,默认值为mse。

IPF,OPF,DDF均为默认值即可。

(2)    传递函数

purelin 线性传递函数

tansig 正切S型传递函数

logsig 对数S型传递函数

隐含层和输出层函数的选择对BP神经网络预测精度有较大影响,一般隐含层节点转移函数选用tansig或logsig,输出层节点转移函数选用tansig或purelin。

(3)    学习训练函数

神经网络的学习分为有导师学习和无导师学习

最速下降BP算法:traingd

动量BP算法:traingdm

学习率可变的BP算法:trainda(学习率可变的最速下降BP算法),traindx(学习率可变的动量BP算法)

弹性算法:trainrp

变梯度算法:

traincgf(Fletcher-Reeves修正算法)

traincgp(Polak-Ribiere修正算法)

traincgb(Powell-Beale修正算法)

trainbfg(BFGS拟牛顿算法)

trainoss(OSS算法)

trainlm(LM算法)

 

参数说明:通过net.trainParam可以查看参数

show: 两次显示之间的训练次数command line frequency

epochs: 训练次数 maximum epochs

time: 最长训练时间(秒)maximum training time

goal: 网络性能目标performance goal

min_grad:性能函数最小梯度minimum gradient

max_fail:最大验证失败次数maximum validation checks

lr:学习速率learning rate

lr_inc:学习速率增长值learning rate increase

lr_dec:学习速率下降值 learning rate decrease

max_perf_inc: maximum performance increase

mc:动量因子momentum constant

(4)    BP神经网络预测函数

simout=sim(‘model’,Parameters)&y=sim(net,x)

net:训练好的网络

x:输入数据

y:网络预测数据

(5)    训练函数

[net,tr]=train(net,P,T,Pi,Ai)

net:待训练的网络

P:输入数据矩阵

T:输出数据矩阵

Pi:初始化输入层条件(default=zeros)

Ai:初始化输出层条件(default=zeros)

net:训练好的网络

tr:训练过程记录

 validation check

翻译过来:确认检查

内涵:神经网络的样本若输入网络,默认情况下会将样本随即分为3类:训练样本,确认样本和测试样本。

确认检查值默认是6,它的意思是指随着网络利用训练样本进行训练的过程中,确认样本的误差曲线连续6次迭代不在下降。这时训练终止(这只是训练终止条件之一,满足任一终止条件,训练过程都将终止)深层含义你可以这样理解,如果随着网络的训练,确认样本的误差已经基本不在减小,甚至增大,那么就没有必要再去训练网络了,因为继续训练下去的话,在利用测试样本进行测试网络的话,测试样本的误差将同样不会有所改善,甚至会出现过度拟合的现象。validation checks已经达到设置的值了,所以停止训练了,如果网络在连续max_fail epochs后不能提高网络性能,就停止训练。有三种方法解决这个问题;

 提高validation checks的数值,比如设置net.trainParam.max_fail 200;其实这等于自己糊弄自己严重不推荐,出现停止训练,就是因为被训练的网络已经过拟合,停下来是应该的。但6的确有点小,建议改成1020之间的数

修改被训练的网络,比如说再加一个隐藏层试试

 如果是数据太相近的问题,试试选择用divideind

还可以加入如下参数,取消validation check功能

net.divideFcn ''

但是这个方法对于网络的训练精度提高和输出的逼近程度没有显著改善,但是取消这个功能之后,gradient又首先达到指定的目标,我的神经网络是不是陷入局部最优了。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值