LSTM MATLAB範例
时间: 2023-07-12 20:39:37 浏览: 142
以下是一个简单的 LSTM MATLAB 示例,用于预测时间序列数据。
```matlab
% 加载数据
load sunspots
sunspots = double(sunspots);
% 划分训练集和测试集
train_data = sunspots(1:264);
test_data = sunspots(265:end);
% 创建 LSTM 网络
num_features = 1;
num_hidden_units = 200;
layers = [ ...
sequenceInputLayer(num_features)
lstmLayer(num_hidden_units,'OutputMode','last')
fullyConnectedLayer(1)
regressionLayer];
options = trainingOptions('adam', ...
'MaxEpochs',100, ...
'MiniBatchSize',24, ...
'InitialLearnRate',0.005, ...
'LearnRateSchedule','piecewise', ...
'LearnRateDropFactor',0.2, ...
'LearnRateDropPeriod',50, ...
'GradientThreshold',1, ...
'Shuffle','once', ...
'Verbose',0, ...
'Plots','training-progress');
% 训练 LSTM 网络
XTrain = train_data(1:end-1);
YTrain = train_data(2:end);
net = trainNetwork(XTrain,YTrain,layers,options);
% 预测测试集数据
XTest = test_data(1:end-1);
YTest = test_data(2:end);
YPred = predict(net,XTest);
% 可视化预测结果
figure
plot(YTest)
hold on
plot(YPred)
xlabel('Time')
ylabel('Sunspots')
legend('Observed','Predicted')
```
此示例使用太阳黑子数据集进行训练和测试,创建了一个具有200个隐藏单元的 LSTM 网络,并使用 Adam 优化算法进行训练。最终预测结果可以通过可视化观察来评估模型的性能。
阅读全文