赞
踩
目录
此示例说明如何使用长期短期记忆 (LSTM) 网络预测时间序列数据。
LSTM 网络是一种循环神经网络 (RNN),它通过遍历时间步并更新 RNN 状态来处理输入数据。RNN 状态包含在所有先前时间步中记住的信息。可以使用 LSTM 神经网络,通过将先前的时间步作为输入来预测时间序列或序列的后续值。要为时间序列预测训练 LSTM 神经网络,请训练具有序列输出的回归 LSTM 神经网络,其中响应(目标)是将值移位了一个时间步的训练序列。也就是说,在输入序列的每个时间步,LSTM 神经网络都学习预测下一个时间步的值。
有两种预测方法:开环预测和闭环预测。
开环预测仅使用输入数据预测序列中的下一个时间步。对后续时间步进行预测时,需要从数据源中收集真实值并将其用作输入。例如,假设要使用时间步 1 到 t−1 中收集的数据来预测序列的时间步 t 的值。要对时间步 t+1 进行预测,请等到记录下时间步 t 的真实值,并将其用作输入进行下一次预测。在进行下一次预测之前,如果有可以提供给 RNN 的真实值,则请使用开环预测。
闭环预测通过使用先前的预测作为输入来预测序列中的后续时间步。在这种情况下,模型不需要真实值便可进行预测。例如,假设要仅使用在时间步 1 至 t−1 中收集的数据来预测序列的时间步 t 至 t+k 的值。要对时间步 i 进行预测,请使用时间步 i−1 的预测值作为输入。使用闭环预测来预测多个后续时间步,或在进行下一次预测之前没有真实值可提供给 RNN 时使用闭环预测。
此图显示使用闭环预测的预测值的序列示例。
此示例使用 Waveform 数据集,它包含生成的 2000 个不同长度的合成波形,有三个通道。该示例训练一个 LSTM 神经网络,以同时使用闭环和开环预测根据先前时间步提供的值来预测波形的将来值。
从 WaveformData.mat 加载示例数据。数据是序列的 numObservations×1 元胞数组,其中 numObservations 是序列数。每个序列都是一个 numChannels×-numTimeSteps 数值数组,其中 numChannels 是序列的通道数,numTimeSteps 是序列的时间步数。
load WaveformData
查看前几个序列的大小。
- data(1:5)
- ans=5×1 cell array
- {3×103 double}
- {3×136 double}
- {3×140 double}
- {3×124 double}
- {3×127 double}
查看通道数。为了训练 LSTM 神经网络,每个序列必须具有相同数量的通道。
- numChannels = size(data{1},1)
-
- numChannels = 3
可视化绘图中的前几个序列。
- figure
- tiledlayout(2,2)
- for i = 1:4
- nexttile
- stackedplot(data{i}')
- xlabel("Time Step")
- end
如图所示:
将数据划分为训练集和测试集。将 90% 的观测值用于训练,其余的用于测试。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。