主要内容

设计层递归神经网络

下一个要介绍的动态网络是层循环网络(LRN)。该网络的早期简化版本由Elman [Elma90].在LRN中,除了最后一层外,网络的每一层都有一个反馈环路,具有单个延迟。原来的Elman网络只有两层,并且使用了一个tansig隐层的传递函数和apurelin输出层的传递函数。原始的Elman网络是使用近似反向传播算法训练的。的layrecnet命令将Elman网络推广为具有任意数量的层,并且在每层中具有任意的传递函数。工具箱使用中讨论的基于梯度的算法的精确版本来训练LRN多层浅层神经网络与反向传播训练.下图演示了一个两层LRN。

LRN配置用于前面讨论过的许多过滤和建模应用程序。为了显示它的操作,本例使用中讨论的“音素”检测问题时间序列分布式延迟神经网络设计.下面是加载数据并创建和训练网络的代码:

负载音素P = con2seq(y);T = con2seq(T);Lrn_net = layrecnet(1,8);lrn_net。trainFcn =“trainbr”;lrn_net.trainParam。Show = 5;lrn_net.trainParam。epoch = 50;Lrn_net = train(Lrn_net,p,t);

{

训练后,您可以使用以下代码绘制响应:

Y = lrn_net(p);情节(cell2mat (y))

图中包含一个轴对象。axis对象包含一个line类型的对象。

图表显示,该网络能够检测到“音素”。该响应与使用TDNN得到的响应非常相似。

每次训练神经网络时,由于不同的初始权重和偏差值以及将数据分为训练集、验证集和测试集的不同划分,可以产生不同的解决方案。因此,针对同一问题训练的不同神经网络可以对相同的输入给出不同的输出。为了确保找到一个具有良好准确性的神经网络,需要重新训练几次。

如果需要更高的精度,还有其他几种技术可以改进初始解。金宝搏官方网站有关更多信息,请参见改进浅神经网络泛化,避免过拟合