Keras的LSTM的时间步长是多少?

2024-09-29 23:23:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Keras中的LSTM实现有一些问题。在

我的训练集结构如下:

  • 序列数:5358
  • 每个序列的长度是300
  • 序列中的每个元素都是由54个特征组成的向量

我不确定如何为有状态LSTM设计输入。在

在本教程之后:http://philipperemy.github.io/keras-stateful-lstm/,我已经创建了子序列(在我的例子中,有1452018个子序列,窗口大小为30)。在

为有状态LSTM的输入重塑数据的最佳选择是什么?在

在这种情况下,输入的时间步长是什么意思?为什么呢?在

批次大小是否与时间步长相关?在


Tags: iogithubhttp元素状态时间教程序列
1条回答
网友
1楼 · 发布于 2024-09-29 23:23:12

I'm unsure on how to shape the input for a stateful LSTM.

LSTM(100, statefull=True)

但是在使用有状态的LSTM之前,问问自己我真的需要statefullLSTM吗?有关详细信息,请参见herehere。在

What is the best option to reshape the data for a stateful LSTM's input?

这取决于手上的问题。但是,我认为您不需要重塑,只需将数据直接输入Keras:

^{pr2}$

What means the timestep of the input in this case? And why?

在您的示例中,时间戳是300。有关时间戳的详细信息,请参见here。在下面的图片中,我们有5个时间戳,我们将它们输入到LSTM网络中。在

enter image description here

Is the batch_size related to the timestep?

不,这与批量大小无关。有关批处理大小的更多详细信息可以在here中找到。在


下面是基于您提供的描述的简单代码。它可能会给你一些直觉:

import numpy as np
from tensorflow.python.keras import Input, Model
from tensorflow.python.keras.layers import LSTM
from tensorflow.python.layers.core import Dense

x_train = np.zeros(shape=(5358, 300, 54))
y_train = np.zeros(shape=(5358, 1))

input_layer = Input(shape=(300, 54))
lstm = LSTM(100)(input_layer)
dense1 = Dense(20, activation='relu')(lstm)
dense2 = Dense(1, activation='sigmoid')(dense1)

model = Model(inputs=input_layer, ouputs=dense2)
model.compile("adam", loss='binary_crossentropy')
model.fit(x_train, y_train, batch_size=512)

相关问题 更多 >

    热门问题