如何为 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 回归准备输入数据?的主要内容,如果未能解决你的问题,请参考以下文章