主要内容

时间序列分布式延迟神经网络设计

该FTDNN仅在静态前馈网络第一层的输入端有抽头延迟线存储器。您还可以在整个网络中分布已拨接的延迟线。分布式TDNN首次引入于[WaHa89]用于音素识别。最初的体系结构是专门针对那个特定问题的。下图是一个通用的两层分布式TDNN。

该网络可以用于类似于音素识别的简化问题。该网络将尝试识别输入信号的频率内容。下图显示了一个信号,其中两个频率之一在任何给定的时间存在。

下面的代码创建该信号和目标网络输出。当输入处于低频时,目标输出为1,当输入处于高频时,目标输出为-1。

时间= 0:99;Y1 = sin(2*pi*time/10);Y2 = sin(2*pi*time/5);Y = [y1 y2 y1 y2];T1 = ones(1100);T2 = -ones(1100);T = [t1 t2 t1 t2];

创建分布式TDNN网络distdelaynet函数。唯一的区别distdelaynet功能和timedelaynet函数的第一个输入参数是一个单元格数组,其中包含在每一层中使用的敲击延迟。在下一个示例中,0到4的延迟用于第1层,0到3的延迟用于第2层。(为了增加一些多样性,训练功能trainbr在本例中使用,而不是默认值trainlm.可以使用中讨论的任何训练函数多层浅层神经网络与反向传播训练.)

D1 = 0:4;D2 = 0:3;P = con2seq(y);T = con2seq(T);Dtdnn_net = distdelaynet({d1,d2},5);dtdnn_net。trainFcn =“trainbr”;dtdnn_net。divideFcn =;dtdnn_net.trainParam。epoch = 100;Dtdnn_net = train(Dtdnn_net,p,t)Yp = sim(dtdnn_net,p);plotresponse (t, yp)

该网络能够准确地区分这两个“音素”。

您将注意到分布式TDNN网络的训练通常比FTDNN慢。这是因为分布式TDNN必须使用动态反向传播。