我是keras的新手 . 我正在尝试使用keras构建单词级句子生成模块 . 我在我的语料库中使用了8000的词汇量和单词的热矢量表示 .

这是我的模特

model = Sequential()
model.add(LSTM(200, return_sequences=False, unroll=True, stateful=False,input_shape=(1,len(itw))  ))
model.add(Activation('tanh'))
model.add(Dense(len(itw)))
model.add(Activation('softmax'))
optimizer = RMSprop(lr=0.01)
model.compile(loss="categorical_crossentropy",optimizer=optimizer,metrics=["accuracy"])
a,b =batch1()
model.fit(a,b,batch_size=45,nb_epoch=5,verbose=1)

这里输入维度为3(如keras lstm所期望的3d输入)输入形状使得(batch_size,1,8000) . 我将第二维度设为1,因为我想逐字逐句地提供 . Batch_size是45,因为这是语料库中句子的平均长度 . 所有句子都假装有“START_TOKEN”并附加“END_TOKEN” .

len(itw)返回词汇长度,在我的情况下是8000

现在训练之后,我希望将生成的单词作为输入循环,直到遇到停止标记以生成句子 . 但似乎模型只考虑当前的输入 .

我希望模型能够考虑之前的输入,而不仅仅是当前的输入 .

那么我应该如何改变我的模型呢

Keras也不适合涉及不同时间系列的nlp应用程序

如何更改模型,以便生成给定n个单词的下一个单词 . 其中n是任何自然数