主要内容

narxnet

具有外部输入的非线性自回归神经网络

说明

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

  • 由从 0 或正值开始递增的输入延迟组成的行向量,inputDelays

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

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

  • 反馈的类型,feedbackMode

  • 反向传播训练函数,trainFcn

并返回一个 NARX 神经网络。

NARX(具有外部输入的非线性自回归)网络可以学习预测一个时间序列,前提是给定该时间序列的过去值、反馈输入和另一个称为外部(或外因)时间序列的时间序列。

示例

示例

全部折叠

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

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

[X,T] = simpleseries_dataset;

将数据划分为训练数据 XTrainTTrain,以及用于预测 XPredict 的数据。在创建闭环网络后,使用 XPredict 执行预测。

XTrain = X(1:80);
TTrain = T(1:80);
XPredict = X(81:100);

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

net = narxnet(1:2,1:2,10);

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

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

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

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

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

Figure Neural Network Training (14-Jul-2025 06:20:06) 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 = 
0.0153

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

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

显示闭环网络。

view(netc)

在闭环模式下运行向前 20 个时间步的预测。

Yc = netc(XPredict,Xic,Aic)
Yc=1×20 cell array
    {[-0.0156]}    {[0.1133]}    {[-0.1472]}    {[-0.0706]}    {[0.0355]}    {[-0.2829]}    {[0.2047]}    {[-0.3809]}    {[-0.2836]}    {[0.1886]}    {[-0.1813]}    {[0.1373]}    {[0.2189]}    {[0.3122]}    {[0.2346]}    {[-0.0156]}    {[0.0724]}    {[0.3395]}    {[0.1940]}    {[0.0757]}

输入参数

全部折叠

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

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

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

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

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

训练函数算法
'trainlm'

莱文贝格-马夸特

'trainbr'

贝叶斯正则化

'trainbfg'

BFGS 拟牛顿

'trainrp'

弹性反向传播

'trainscg'

量化共轭梯度

'traincgb'

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

'traincgf'

弗莱彻-鲍威尔共轭梯度

'traincgp'

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

'trainoss'

单步正割

'traingdx'

可变学习率梯度下降

'traingdm'

带动量的梯度下降

'traingd'

梯度下降

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

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

数据类型: char

版本历史记录

在 R2010b 中推出