我怎么预测未来结果训练Narx网络?

6视图(30天)
我已经训练一个NARX网络使用时间序列神经网络工具箱应用使用一组单元格格式的数据与66年时间步骤,包含6个不同的变量在这个输入集。培训的目标是在单元格格式,包含1变量66时间步。
我训练的网络细胞列中的数据格式,以10隐藏神经元,2延迟使用Levenberg-Marquardt训练算法和70%的训练,15%的验证和15%的测试。
从这一点,我希望能够输入一组数据单元格格式,与35个时间步和6个变量来预测的结果数据集的延续到未来的目标数据集用于培训。
我下载“净”对象,试图使用经过训练的网络,但是我始终接受错误的是:
错误使用网络/ sim(第266行)
数量输入不匹配net.numInputs。
错误在网络/ subsref(15行)
否则v = sim (vin,潜艇{:});
错误在Session_08_11_2017(第108行)
结果=净(X_Predictor);
我相对较新的MatLab这可能看起来像一个非常简单的问题,但在这个问题上的任何帮助将不胜感激。
提前感谢。
2的评论
C麦克休
C麦克休 2017年11月16日
道歉格雷格,我想这个问题可能是在我的训练方法。请参阅以下高级脚本来自网络的训练。
%解决一个自回归问题与外部输入NARX神经网络
%神经时间序列生成的脚本程序
% 16 - 11月- 2017 22:31:32创建
%
%这个脚本假设这些变量定义:
%
% X_Train_Cell——输入时间序列。
% T_Train_Cell——反馈时间序列。
X = X_Train_Cell;
T = T_Train_Cell;
%选择培训功能
%为所有培训功能的列表类型:帮助nntrain
%的trainlm通常是最快的。
%的trainbr花费更长的时间,但是这可能是更好的具有挑战性的问题。
%的trainscg使用更少的内存。在低内存的情况下适用。
trainFcn =“trainlm”;% Levenberg-Marquardt反向传播。
%建立一个非线性自回归网络与外部输入
inputDelays = 1:2;
feedbackDelays = 1:2;
hiddenLayerSize = 10;
网= narxnet (inputDelays feedbackDelays hiddenLayerSize,“开放”,trainFcn);
%选择输入和反馈前/后处理功能
%设置反馈输入自动应用于反馈输出
%对所有处理功能的列表类型:帮助nnprocess
%定制输入参数:net.inputs{我}.processParam
%定制输出参数:net.outputs{我}.processParam
net.inputs {1}。processFcns = {“removeconstantrows”,“mapminmax”};
net.inputs {2}。processFcns = {“removeconstantrows”,“mapminmax”};
%为训练和仿真数据
%的函数PREPARETS准备timeseries数据为一个特定的网络,
%转移最少填满时间的输入状态和层
%。使用PREPARETS可使你保持原始时间序列数据
%不变,而轻松地定制它与不同的网络
%的延迟,与开环或闭环反馈模式。
[x, xi,人工智能,t] = preparets(净,x, {}, t);
%设置部门的数据进行训练、验证测试
%为所有数据部门功能的列表类型:帮助nndivision
网。divideFcn =“dividerand”;%将随机数据
网。divideMode =“时间”;%划分每个样本
net.divideParam。trainRatio = 70/100;
net.divideParam。valRatio = 15/100;
net.divideParam。testRatio = 15/100;
%选择性能函数
%为所有性能函数的列表类型:帮助nnperformance
网。performFcn =mse的;%均方误差
%选择情节功能
%的所有情节功能类型:帮助nnplot
网。plotFcns = {“plotperform”,“plottrainstate”,“ploterrhist”,
“plotregression”,“plotresponse”,“ploterrcorr”,“plotinerrcorr”};
%训练网络
(净,tr) =火车(净,x, t, xi, ai);
%测试网络
净(y = x, xi, ai);
e = gsubtract (t、y);
性能=执行(净、t、y)
%计算训练、验证和测试性能
trainTargets = gmultiply (t, tr.trainMask);
valTargets = gmultiply (t, tr.valMask);
testTargets = gmultiply (t, tr.testMask);
trainPerformance =执行(净trainTargets y)
valPerformance =执行(净valTargets y)
testPerformance =执行(净testTargets y)
%查看网络
视图(净)
%的情节
%取消这些线,使各种各样的情节。
%,plotperform (tr)
%,plottrainstate (tr)
%,ploterrhist (e)
%,plotregression (t, y)
%,plotresponse (t, y)
%,ploterrcorr (e)
%,plotinerrcorr (x, e)
%闭环网络
%使用这个网络进行多步预测。
%的函数CLOSELOOP取代了反馈和直接输入
%从文稿层连接。
netc = closeloop(净);
netc.name = [net.name”——闭环”];
视图(netc)
(xc、xic aic, tc) = preparets (netc, X, {}, T);
yc = netc (xc、xic aic);
closedLoopPerformance =执行(净、tc、yc)
%多步预测
%有时是有用的在开环形式的模拟一个网络
%只要有已知的输出数据,然后切换到闭环形式
%执行多步预测,同时提供外部输入。
%这里除了5个输入系列和目标的步伐
%模拟开环形式的网络,利用更高
%的准确性提供目标系列生产:
numTimesteps =大小(x, 2);
knownOutputTimesteps = 1:(numTimesteps-5);
predictOutputTimesteps = (numTimesteps-4): numTimesteps;
X1 = X (:, knownOutputTimesteps);
T1 = T (:, knownOutputTimesteps);
(x1, xio, aio) = preparets(净,x1, {}, T1);
[xfo日元,afo] =净(x1, xio, aio);
%的下一个网络及其最终状态将被转换成
%闭环形式五个预测只有五个输入
%。
x2 = X (1、predictOutputTimesteps);
[netc、xic aic] = closeloop(网,xfo, afo);
[y2, xfc,亚足联]= netc (x2, xic、aic);
multiStepPerformance =执行(净,T (1, predictOutputTimesteps)、y2)
%替代x2的预测可以为不同的值,或进一步
%的预测可以通过持续的模拟与额外的外部
%的输入和最后一个闭环xfc和亚足联。
%提前预测网络
%对于某些应用程序有助于早期预测一个步伐。
%原网络收益预测y (t + 1)在同一时间
%给y (t + 1)。对于某些应用程序,如决策、
%有助于预测y (t + 1) y (t)是可用的,但是之前
%实际y (t + 1)。网络可以返回它的输出
%步伐早期通过移除一个延迟,使其最小抽头延迟是现在
% 0,而不是1。新的网络返回相同的输出与原始
%网络,但输出左移一个步伐。
网= removedelay(净);
nets.name = [net.name”——预测领先一步”];
视图(网)
[X,切除酶,ais, ts) = preparets(网,X, {}, T);
y =网(xs,切除酶,ais);
stepAheadPerformance =执行(网、t、y)
%的部署
变化百分比(假)值(真),使下面的代码块。
%的更多信息,请参见每一代的帮助功能。
如果(假)
%为应用程序生成MATLAB函数神经网络
%部署在MATLAB脚本或MATLAB编译器和生成器
%的工具,或者只是检查计算你的训练有素的神经
%网络执行。
genFunction(净,“myNeuralNetworkFunction”);
y = myNeuralNetworkFunction (x, xi, ai);
结束
如果(假)
%为神经网络代码生成matrix-only MATLAB函数
%与MATLAB编码器工具生成。
genFunction(净,“myNeuralNetworkFunction”,“MatrixOnly”,“是的”);
:x1 = cell2mat (x (1));
x2 = cell2mat (x (2:));
ξ1 = cell2mat(ξ(1:));
ξ2)= cell2mat(ξ(2:));
y = myNeuralNetworkFunction (x1, x2)(ξ1,ξ2));
结束
如果(假)
%为模拟或部署与生成模型图万博1manbetx。
%仿万博1manbetx真软件编码器工具。
gensim(净);
结束
如果有什么你想让我上传,请让我知道。

登录置评。

答案(0)

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!