我有一个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,)我如何准备它来提供这种模型?我必须改变我的输入数据形状吗?
感谢您的帮助!! (=
答案 0 :(得分:4)
看起来Keras使用静态展开方法在TensorFlow上构建循环网络(例如LSTM)。 input_length
应该是您要训练的最长序列的长度:因此,如果CSV文件train_file
的每一行都是逗号分隔的符号序列,则它应该是符号的数量。最长的一行。