keras LSTM需要全步时移来辨识模型参数吗?

5rgfhyps  于 2023-03-02  发布在  其他
关注(0)|答案(1)|浏览(142)

我使用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
Nb_output = number of parameter to identify

我的想法是

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) 
    
    increase the training set by using a shift window on the time series 
    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的Angular 来看)?

ctehm74n

ctehm74n1#

有许多方法可以拆分数据以进行训练,例如:假设您有一个数据集

[1,2,3,4,5,6,7,8]

我们将序列分解为一系列长度为的子序列:m,并且我们将每个序列之间的延迟表示为:d。这被称为Takens嵌入
因此例如如果d=m=4

[1,2,3,4][5,6,7,8]

或者如果我们设置d=1m=4,我们得到:

[1,2,3,4][2,3,4,5][3,4,5,6][4,5,6,7][5,6,7,8]

任何d>1m>1都是有效的。如何预处理数据集取决于您的问题。我建议尝试各种窗口技术,然后比较结果。据我所知,在选择窗口大小方面没有黄金法则。

相关问题