基于MATLAB的LSTM时序预测

您好,就是我用LSTM训练完数据集,但是我预测的时候想把它从更小的时间步长比如压缩到0.1秒一个步长来从0开始预测,参照您那一篇LSTM的博客该改那一部分的代码呀?救命

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7664602
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:常用的LSTM时间序列预测(单变量时间序列预测 | 多变量时间序列预测 | 他们的预测未来数据方法)
  • 除此之外, 这篇博客: MATLAB中LSTM时序分类的用法与实战中的 2.2 用LSTM网络训练与测试 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 直接上代码

    %% 创建变量
    XTrain=mts.train;
    YTrain=categorical(mts.trainlabels);%将数值数组转化为类别数组
    XTest=mts.test;
    YTest=categorical(mts.testlabels);
    
    %% 构建LSTM网络
    inputSize = 12;%特征的维度
    numHiddenUnits = 100;%LSTM网路包含的隐藏单元数目
    numClasses = 9;%label标签的种数,该例子中为人数
    
    layers = [ ...
        sequenceInputLayer(inputSize)
        lstmLayer(numHiddenUnits,'OutputMode','last')
        fullyConnectedLayer(numClasses)
        softmaxLayer
        classificationLayer];
    
    maxEpochs = 100;%最大训练周期数
    miniBatchSize = 27;%分块尺寸
    
    options = trainingOptions('adam', ...
        'ExecutionEnvironment','cpu', ...
        'MaxEpochs',maxEpochs, ...
        'MiniBatchSize',miniBatchSize, ...
        'GradientThreshold',1, ...
        'Verbose',false, ...
        'Plots','training-progress');
    
    %% 训练
    net=trainNetwork(XTrain,YTrain,layers, options)
    
    %% 预测
    YPred = classify(net,XTest, ...
        'MiniBatchSize',miniBatchSize, ...
        'SequenceLength','longest')
    %% 精确度检验
    acc = sum(YPred == YTest)./numel(YTest)
    
    

    训练结果
    在这里插入图片描述
    检验结果
    acc = 0.9324

    可见LSTM的分类效果还是挺优良的。
    .

  • 您还可以看一下 沈福利老师的自然语言处理实战 深度学习之LSTM情感分析课程中的 文本情感分析 模型训练方法和验证方法定义小节, 巩固相关知识点