主要内容

设计层递归神经网络

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

已经讨论过的许多滤波和建模应用都使用了LRN配置。为了展示它的操作,这个例子使用了“音素”检测问题设计时间序列分布延迟神经网络.下面是加载数据、创建和训练网络的代码:

负载音素p = con2seq (y);t = con2seq (t);lrn_net = layrecnet (1,8);lrn_net。trainFcn =“trainbr”;lrn_net.trainParam。显示= 5;lrn_net.trainParam。时代= 50;lrn_net =火车(lrn_net、p、t);

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

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

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

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

每次训练神经网络时,由于初始权重和偏差值的不同,以及将数据划分为训练、验证和测试集的不同,都会导致不同的解决方案。因此,针对同一问题训练的不同神经网络,对于相同的输入,可以得到不同的输出。为了确保找到了精度较高的神经网络,需要多次再训练。

如果需要更高的精度,还有其他一些技术可以改进初始解。万博 尤文图斯有关更多信息,请参见改进浅神经网络泛化,避免过拟合