主要内容

narnet

非线性自回归神经网络

说明

narnet(feedbackDelays,hiddenSizes,feedbackMode,trainFcn) 接受以下参量:

  • 由从 0 或正值开始递增的反馈延迟组成的行向量,feedbackDelays

  • 由一个或多个隐藏层大小组成的行向量,hiddenSizes

  • 反馈的类型,feedbackMode

  • 训练函数,trainFcn

并返回一个 NAR 神经网络。

您可以训练 NAR(非线性自回归)神经网络来根据时间序列的过去值预测时间序列。

示例

示例

全部折叠

训练非线性自回归 (NAR) 神经网络,并对新的时间序列数据进行预测。预测时间序列中的序列值也称为多步预测。闭环网络可以执行多步预测。在外部反馈缺失时,闭环网络可以继续通过使用内部反馈来进行预测。在 NAR 预测中,时间序列的将来值仅根据该时间序列的过去值进行预测。

加载简单时间序列预测数据。

T = simplenar_dataset;

创建一个 NAR 网络。定义隐藏层的反馈延迟和大小。

net = narnet(1:2,10);

使用 preparets 准备时间序列数据。该函数会自动移动输入和目标时间序列,使其与填充初始输入和层延迟状态所需的步数相同。

[Xs,Xi,Ai,Ts] = preparets(net,{},{},T);

建议完全以开环方式创建网络,然后将网络转换为闭环网络以进行向前多步预测。之后,该闭环网络可以根据您的需要预测任意数量的将来值。如果您仅在闭环模式下仿真神经网络,则网络可以执行与输入序列中的时间步数量一样多的预测。

训练 NAR 网络。train 函数以开环(串并行架构)形式训练网络,包括验证和测试步骤。

net = train(net,Xs,Ts,Xi,Ai);

Figure Neural Network Training (09-Aug-2025 13:41:38) contains an object of type uigridlayout.

显示经过训练的网络。

view(net)

基于网络输入 Xs、初始输入状态 Xi 和初始层状态 Ai 计算开环网络的网络输出 Y、最终输入状态 Xf 和最终层状态 Af

[Y,Xf,Af] = net(Xs,Xi,Ai);

计算网络性能。

perf = perform(net,Ts,Y)
perf = 
1.0100e-09

要预测接下来 20 个时间步的输出,请先在闭环模式下对网络进行仿真。开环网络 net 的最终输入状态 Xf 和层状态 Af 成为闭环网络 netc 的初始输入状态 Xic 和层状态 Aic

[netc,Xic,Aic] = closeloop(net,Xf,Af);

显示闭环网络。该网络只有一个输入。在闭环模式下,此输入连接到输出。直接延迟输出连接将替换延迟目标输入。

view(netc)

要对网络进行向前 20 个时间步的仿真,请输入一个长度为 20 的空元胞数组。该网络只需要 XicAic 中给出的初始条件。

Yc = netc(cell(0,20),Xic,Aic)
Yc=1×20 cell array
    {[0.8346]}    {[0.3329]}    {[0.9084]}    {[1.0000]}    {[0.3190]}    {[0.7329]}    {[0.9801]}    {[0.6409]}    {[0.5146]}    {[0.9746]}    {[0.9077]}    {[0.2807]}    {[0.8651]}    {[0.9897]}    {[0.4093]}    {[0.6838]}    {[0.9976]}    {[0.7007]}    {[0.4311]}    {[0.9660]}

输入参数

全部折叠

零或正反馈延迟,指定为递增的行向量。

隐藏层的大小,指定为由一个或多个元素组成的行向量。

反馈类型,指定为 'open''closed''none'

训练函数名称,指定为下列各项之一。

训练函数算法
'trainlm'

莱文贝格-马夸特

'trainbr'

贝叶斯正则化

'trainbfg'

BFGS 拟牛顿

'trainrp'

弹性反向传播

'trainscg'

量化共轭梯度

'traincgb'

带鲍威尔/比尔重启的共轭梯度

'traincgf'

弗莱彻-鲍威尔共轭梯度

'traincgp'

波拉克-里比埃尔共轭梯度

'trainoss'

单步正割

'traingdx'

可变学习率梯度下降

'traingdm'

带动量的梯度下降

'traingd'

梯度下降

示例: 例如,您可以将可变学习率梯度下降算法指定为训练算法,如下所示:'traingdx'

有关训练函数的详细信息,请参阅训练与应用多层浅层神经网络选择多层神经网络训练函数

数据类型: char

版本历史记录

在 R2010b 中推出