我是在Keras RNN结构中实现语言模型的新手。我有具有以下统计离散的话(而不是从一个段落)的数据集,了解Keras中的字符级嵌入LSTM
- 总字样本:1953
- 明显不同的字符的总数:33(包括开始,结束和*) 一句话
- 最大长度(字符数)为10
现在,我想建立一个模型,将接受一个字符和单词预测下一个字符。我填充了所有单词,以便它们具有相同的长度。所以我的输入是Word_input形状1953 x 9和目标是1953 x 9 x 33。我也想使用嵌入层。所以我的网络架构,
self.wordmodel=Sequential()
self.wordmodel.add(Embedding(33,embedding_size,input_length=9))
self.wordmodel.add(LSTM(128, return_sequences=True))
self.wordmodel.add(TimeDistributed(Dense(33)))
self.wordmodel.compile(loss='mse',optimizer='rmsprop',metrics=['accuracy'])
举个例子一个词 “CAT” 以填充表示
输入到网络 - START CAT END * * * *(9个字符)
的目标相同--- CAT结束* * * * *(9个字符)
因此,与TimeDistributed
输出我测量网络预测和目标的差异。我也将batch_size
设置为1.因此,在读取每个样本字后,网络重置其状态。
我的问题是我在做概念上的权利?每当我运行我的训练时,准确度都会停留在56%左右。
请赐教。谢谢。
谢谢danche您的快速回复。我曾使用CCE但错过了softmax。也会尝试pytorch教程。 –