基于matlab的LSTM模型

1 介绍

使用matlab处理时序预测问题,导入的是一个一维向量,前5个作为输入,第6个作为输出,这样就是1-5输入,6输出,2-6输入,7输出。使用matlab进行处理,先进行数据形状改变,归一化等,然后搭建lstm模型,再进行预测,在使用的过程中,由于数据数量级差别过大,所以使用log对数据进行处理

2 导入数据,数据处理

详情联系Q 596520206
%%  导入数据(时间序列的单列数据)
result = xlsread('data1.xlsx');
result = log(result);

%%  数据分析
num_samples = length(result);  % 样本个数 
kim = 5;                      % 延时步长(kim个历史数据作为自变量)
zim = 1;                      % 跨zim个时间点进行预测

%%  划分数据集
for i = 1: num_samples - kim - zim + 1
    res(i, :) = [reshape(result(i: i + kim - 1), 1, kim), result(i + kim + zim - 1)];
end

%%  划分训练集和测试集
temp = 1: 1: 20475;

P_train = res(temp(1: 16379), 1: kim)';
T_train = res(temp(1: 16379), kim+1)';
M = size(P_train, 2);

P_test = res(temp(16380: end), 1: kim)';

T_test = res(temp(16380: end), kim+1)';
N = size(P_test, 2);

3 搭建模型和训练

%%  创建模型
layers = [
    sequenceInputLayer(5)              % 建立输入层
    
    lstmLayer(10, 'OutputMode', 'last') % LSTM层
    reluLayer                           % Relu激活层
    
    fullyConnectedLayer(1)              % 全连接层
    regressionLayer];                   % 回归层
 
%%  参数设置
options = trainingOptions('adam', ...       % Adam 梯度下降算法
    'MaxEpochs', 100, ...                  % 最大训练次数
    'InitialLearnRate', 5e-5, ...           % 初始学习率
    'LearnRateSchedule', 'piecewise', ...   % 学习率下降
    'LearnRateDropFactor', 0.1, ...         % 学习率下降因子
    'LearnRateDropPeriod', 800, ...         % 经过800次训练后 学习率为 0.005 * 0.1
    'Shuffle', 'every-epoch', ...           % 每次训练打乱数据集
    'Plots', 'training-progress', ...       % 画出曲线
    'Verbose', false);

%%  训练模型
net = trainNetwork(p_train, t_train, layers, options); % 训练集输入、训练集输出、模型结构、超参数

4 最后的结果展示

请添加图片描述
如果有需要,可以联系:https://docs.qq.com/doc/DWEtRempVZ1NSZHdQ。

  • 9
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王小葱鸭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值