You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

用于单变量时间序列模型参数识别的LSTM是否需全步长时移?

问题

我用LSTM深度学习方法识别生成单变量时间序列的数学模型参数,这些参数会影响时间序列的振荡频率与形态。目前搭建的LSTM模型输入是1秒时长的时间序列(含1024个样本),模型结构如下:

DLmodel = Sequential()
DLmodel.add(LSTM(units=Nb_input, return_sequences=True, input_shape=(None, Nb_input), activation='sigmoid'))  
DLmodel.add(Dropout(0.3))
DLmodel.add(Dense(Nb_input // 4, activation="relu", kernel_initializer="uniform"))
DLmodel.add(Dropout(0.3))
DLmodel.add(Dense(Nb_input // 8, activation="relu", kernel_initializer="uniform"))
DLmodel.add(Dropout(0.3)) 
DLmodel.add(Dense(Nb_output, activation="linear", kernel_initializer="uniform"))

其中参数定义:

Nb_input = number of sample  # 即1024
Nb_output = number of parameter to identify  # 即3

我的训练思路如下:

while 1:
    label = randomly choose 3 model parameters N times (dimension = 1 x N x 3) 
    signal = generate N signal of 5 seconds (dimension = 1 x N x 1024) 
    
    # 通过滑动窗口扩充训练集
    training set = windowed signal (dimension = 1 x N*5 x 1024)
    label = copy model parameters(dimension = 1 x N*5 x 3) 
    
    Fit the LSTM
    
    Test LSTM on new data

核心疑问:训练LSTM时,输入是否必须采用1样本步长时移构建训练集?还是可以采用完整窗口(1024样本)步长时移?另外,窗口起始处的事件与窗口末尾处的事件,对LSTM而言是否等效?

回答
  • 不是必须用1样本步长的滑动窗口,两种步长方式都可行,核心看任务需求和数据特性:
    1. 1样本步长:会生成大量重叠的训练样本,能让模型更充分学习时间序列的连续细节,比如振荡的过渡形态。但缺点是样本冗余度高,训练计算量会大很多,还可能引入过拟合风险——毕竟很多样本高度相似。
    2. 完整窗口步长:生成的样本完全不重叠,每个样本对应时间序列上的独立片段。这种方式训练效率更高,没有冗余,但模型能学习到的时间连续性信息会少一些,不过如果你的5秒信号里已经包含足够多的振荡周期,也能覆盖参数对应的形态特征。
  • 窗口起始和末尾的事件对LSTM不等效。LSTM是顺序模型,对输入序列的时序信息敏感,窗口里的事件顺序会影响它提取的特征。比如一个振荡信号,窗口起始在波峰和起始在波谷,输入给LSTM的序列时序完全不同,模型提取的特征自然有差异。不过因为你的任务是识别生成信号的全局模型参数(参数决定整个信号的振荡特性),只要窗口包含足够多的振荡周期,不管窗口起始位置在哪,模型最终应该能学到参数对应的全局特征——只是用1样本步长的话,模型会接触到更多不同起始位置的样本,对参数的鲁棒性识别可能更好。

内容的提问来源于stack exchange,提问作者ymmx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 14:52:54