MATLAB神经网络——BP神经网络训练过程介绍(newff)

1.newff网络的详细解释

设置前馈长度

ff_zeros=zeros(1,ff_TDL);

设置神经网络输入数据,此处input表示输入数据

training_input=input_ANN([ff_zeros input],ff_TDL,tlen);

选择网络,此处选择BP神经网络,即newff,该网络的定义及含义如下:

net=newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF) 

该网络的各个参数含义如下:

PR --输入元素的最小值和最大值的Rx2矩阵R

SI -- 第 i 层的大小,对于Nl层,N个隐藏层需要定义n个层神经元的个数

TFI--第 i 层的传递函数,默认 = ' tansig'
hardlim 硬限幅传递函数
hardlims 对称硬限幅传递函数
purelin 线性传递函数
tansig 正切S型传递函数
logsig 对数S型传递函数
dpurelin 线性传递函数的导数
dtansig 正切S型传递函数的导数
dlogsig 对数S型传递函数的导数
compet 竞争传递函数
radbas 径向基传递函数
satlins 对称饱和线性传递函数

BTF-- 反向传播网络训练函数,默认 = ' traingdx'
%trainscg  trainlm  trainbr  trainbfg trainrp trainscg traincgb trainoss
%traingdx traingd

BLF-- 反向传播权重/偏差学习函数,默认 = ' learngdm'
learnp 感知器学习函数
learnpn 标准感知器学习函数
learnwh Widrow_Hoff学习规则
learngd BP学习规则
learngdm 带动量项的BP学习规则
learnk Kohonen权学习函数
learncon Conscience阈值学习函数
learnsom 自组织映射权学习函数

PF -- 性能函数,默认 = ' mse'
mae 均值绝对误差性能分析函数
mse 均方差性能分析函数
msereg 均方差w/reg性能分析函数
dmse 均方差性能分析函数的导数
dmsereg 均方差w/reg性能分析函数的导数

2.神经网络的写法

现此网络的写法有两种,新版本的MATLAB建议用新的写法定义该网络,在此处,该网络的定义如下:

nneu1:第一层神经元的个数
nneu2:第二层神经元的个数
nneuend:输出层神经元的个数

net = newff(minmax(training_input),[nneu1 nneu2 nneuend],{'logsig','logsig','purelin'},'trainscg') ;%旧版本写法

% net =newff(training_input,Rx_signal,[nneu1 nneu2],{'logsig','logsig','purelin'},'trainscg');%新版本写法

init的作用:如果网络不够准确,您可以尝试重新初始化网络并进行训练。每次初始化前馈网络时,网络参数都不同,并且可能产生不同解。

net=init(net);

网络参数设置,此处epochs表示训练最大迭代的次数,goal表示该网络的早小误差,min_grad表示最小性能梯度,这几个参数中任何一个参数达到设定值,训练中止。

net.trainParam.epochs=300;% 训练次数
net.trainParam.goal = 1e-3;  % 训练目标最小误差
net.trainParam.min_grad=1e-600;% 最小性能梯度
net.trainParam.show=NaN;   % 现实频率
net.trainParam.mc=0.95;          % 附加动量因子
net.trainParam.lr=0.05;            % 学习速率,这里设置为0.05

网络训练,其中goal表示期望数据

[Net]=train(net,training_input,goal);

此时网络已经训练完成,可以将未经过训练的数据input_tese进行预测

ann_input=input_ANN([ff_zeros input_test],ff_TDL,sig_length);
ANN_output=sim(Net,ann_input);

3.完整代码如下:

ff_zeros=zeros(1,ff_TDL);
nneu=10;


%% Training Neural Network
training_input=input_ANN([ff_zeros input],ff_TDL,tlen);

% 训练输入
net = newff(minmax(training_input),[nneu 1],{'logsig','purelin'},'trainscg') ;%旧版本写法

% net =newff(training_input,Rx_signal,[nneu],{'logsig','purelin'},'trainscg');%新版本写法

net=init(net);
net.trainParam.epochs=300;% 训练次数
net.trainParam.goal = 1e-3;  % 训练目标最小误差
net.trainParam.min_grad=1e-600;% 最小性能梯度
net.trainParam.show=NaN;   % 现实频率
net.trainParam.mc=0.95;      % 附加动量因子
net.trainParam.lr=0.05;        % 学习速率,这里设置为0.05

%网络训练
[Net]=train(net,training_input,goal);


%用训练网络预测其他数据
ann_input=input_ANN([ff_zeros input_test],ff_TDL,sig_length);
ANN_output=sim(Net,ann_input);

以上就是今天的内容,这篇文章能帮到你是我写作的意义所在,有任何问题可以评论或私信。当然,您的点赞与关注也是对我最大的支持与肯定,也是我继续写作的动力源泉。

  • 17
    点赞
  • 138
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

惜洛-Jankin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值