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