如何为 keras 中的 LSTM 回归准备输入数据?

Posted

技术标签:

【中文标题】如何为 keras 中的 LSTM 回归准备输入数据?【英文标题】:How to prepare input data for a LSTM regression in keras? 【发布时间】:2016-07-05 11:03:50 【问题描述】:

我有一个包含 5K 行(-1K 用于验证)和 17 列的数据集,包括最后一列(目标整数二进制标签)。

我的模型就是这个 2 层 LSTM:

model = Sequential()
model.add(Embedding(output_dim=64, input_dim=17))
model.add(LSTM(32, return_sequences=True))
model.add(Dropout(0.5))
model.add(LSTM(32, return_sequences=False))
model.add(Dense(1))

model.compile(loss='binary_crossentropy', optimizer='rmsprop',
              class_mode='binary')

用 pandas 加载我的数据集后

df_train = pd.read_csv(train_file)
train_X, train_y = df_train.values[:, :-1], df_train['target'].values

并尝试运行我的模型,我收到此错误:

例外:使用 TensorFlow 时,您应该明确定义序列的时间步数。 - 如果您的第一层是嵌入,请确保将“input_length”参数传递给它。否则,请确保第一层具有“input_shape”或“batch_input_shape”参数,包括时间轴。

我应该在input_length 中输入什么?总行数?

由于我的数据框的形状为 train_X=(4000, 17) train_y=(4000,) 我如何准备它来提供这种模型?我必须改变我的输入数据形状?

感谢您的帮助!! (=

【问题讨论】:

***.com/a/62570576/10375049 【参考方案1】:

看起来 Keras 使用静态展开方法在 TensorFlow 上构建循环网络(例如 LSTM)。 input_length 应该是您要训练的最长序列的长度:因此,如果 CSV 文件 train_file 的每一行都是以逗号分隔的符号序列,则它应该是最长行中的符号数。

【讨论】:

所以...既然CSV文件上的每个字段都是一个整数,我可以考虑文件中最大数字的长度吗? (如果数据文件中较大的数字是00979797,那么input_length 将是8)?这样对吗?谢谢! 不,应该是最长行中的字段数。如果所有行都相同,那么它应该只是字段数。

以上是关于如何为 keras 中的 LSTM 回归准备输入数据?的主要内容,如果未能解决你的问题,请参考以下文章

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

如何为二维数据构建LSTM网络?

如何为 LSTM keras 重塑 X_train 和 y_train

如何为 LSTM 实现 Keras 自定义损失函数

如何为多对一二元分类 LSTM 准备数据?

当使用多个不同长度和多个特征的时间序列时,如何为 LSTM 准备数据?