LSTM Keras整理出X和y输入尺寸

时间:2020-05-05 00:01:32

标签: python tensorflow keras deep-learning lstm

我正在尝试构建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

“数据”列是我的X,标签是y。 df有34890行。每行包含2个浮点数。数据代表一堆顺序的文本,每个观察值代表一个句子。有5个班级。

我正在尝试使LSTM符合此数据,并对如何使用timestep参数感到困惑。

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

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参数应该是什么?如何调整数据以适应这种情况?

1 个答案:

答案 0 :(得分:1)

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

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

data[:,None,:] ==>新形状:(34890,1,2),标签就可以了