我是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是任何自然数