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

时间:2016-03-18 15:46:20

标签: python pandas regression tensorflow keras

我有一个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,)我如何准备它来提供这种模型?我必须改变我的输入数据形状吗?

感谢您的帮助!! (=

1 个答案:

答案 0 :(得分:4)

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