LSTM Keras 整理 X 和 y 输入维度

LSTM Keras sorting out the X and y input dimensions

我正在尝试构建 LSTM,但对塑造数据的最佳方式感到困惑。

我有一个如下所示的数据框:

df.head(5)


 data                                                     labels
0  [0.0009808844009380855, 0.0008974465127279559]             1
1  [0.0007158940267629654, 0.0008202958833774329]             3
2  [0.00040971929722210984, 0.000393972522972382]             3
3  [7.916243163372941e-05, 7.401835468434177e243]             3
4  [8.447556379936086e-05, 8.600626393842705e-05]             3

'data' 列是我的 X,标签是 y。 df 有 34890 行。每行包含 2 个浮点数。数据代表一堆连续的文本,每个观察结果代表一个句子。有 5 个类。

我正在尝试用这些数据拟合 LSTM,但对如何使用时间步长参数感到困惑。

使用这段代码,我得到以下信息:

data = np.array(df.class_proba.to_list())

labels = pd.get_dummies(df['speaker_spaff']).values

print('Shape of data tensor:', data.shape)
print('Shape of label tensor:', labels.shape)

Shape of data tensor: (34890, 2)
Shape of label tensor: (34890, 5)

我认为我的标签张量是正确的,但我对我的数据张量感到困惑。

Keras LSTM 层需要以下形状:样本、时间步长和特征。

如果我没有理解错的话,我的样本数是34890,我的特征是2,但是时间戳呢? timestamp 参数应该是什么?我如何重塑我的数据以适应它?

如果需要多个时间步长,您必须创建一个滑动 window 函数来帮助您重塑数据,为此,来自 Keras 的 TimeSeriesGenerator 是一个很好的工具(here a good example )

如果您认为您的数据必须有一个单一的时间步长,您只需简单地扩展维度:

data[:,None,:] ==> 新形状:(34890, 1, 2),标签没问题