问题遇到的现象和发生背景
LSTM预测结果一直有这样的错误 怎么改也不得其法
问题相关代码,请勿粘贴截图
clc
close all
clear all
%加载数据,重构为行向量
data=xlsread('data7.xlsx','Sheet1','A1:F441');
trainsample=xlsread('data7.xlsx','Sheet1','A1:F441');
testsample=xlsread('data7.xlsx','Sheet2','A1:F256');
IN_train_x = trainsample(:,1:4)';
OUT_train_x = trainsample(:,5)';
IN_test_x= testsample(:,1:4)';
OUT_test_x = testsample(:,5)';
N = size(IN_test_x,2);
[in_train_X, ps_input] = mapminmax(IN_train_x,0,1);
in_test_X = mapminmax('apply',IN_test_x,ps_input);
[out_train_x, ps_output] = mapminmax(OUT_train_x,0,1);
in_train_X = in_train_X(:,1:441);
out_train_x=out_train_x(:,1:441);
rng('default')%设置随机种子
%%
%创建LSTM回归网络,指定LSTM层的隐含单元个数96*3
%序列预测,因此,输入一维,输出一维
%rng('default')
numFeatures = size(in_train_X,1);
numResponses = 1;
numHiddenUnits =200;
layers = [ ...
sequenceInputLayer(numFeatures)
lstmLayer(numHiddenUnits)
fullyConnectedLayer(numResponses)
regressionLayer];
%指定训练选项,求解器设置为adam, 250 轮训练。
%1梯度阈值设置为 1。指定初始学习率 0.005,在 125 轮训练后通过乘以因子 0.2 来降低学习率。
%2梯度阈值设置为 1。指定初始学习率 0.005,在 125 轮训练后通过乘以因子 0.2 来降低学习率。
options = trainingOptions('adam', ...
'MaxEpochs',150, ...
'GradientThreshold',1, ...
'InitialLearnRate',0.01, ...
'LearnRateSchedule','piecewise', ...
'LearnRateDropPeriod',125,...
'ValidationFrequency',10, ...
'LearnRateDropFactor',0.2, ...
'Verbose',0, ...
'Plots','training-progress');
%训练LSTM
net = trainNetwork(in_train_X,out_train_x,layers,options);
net = resetState(net);
net = predictAndUpdateState(net,in_train_X);
YPred = predict(net,in_test_X,'MiniBatchSize',1);
%%
% 5. 数据反归一化
T_sim = mapminmax('reverse',YPred,ps_output);