我是在 Keras RNN 结构中实现语言模型的新手。我有一个离散单词的数据集(不是来自单个段落),它具有以下统计信息,
- 单词样本总数:1953
- 不同字符总数:33 个(包括 START、END 和 *)
- 一个单词的最大长度(字符数)为 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 END * * * * *(9 个字符)
因此,TimeDistributed
我正在使用输出测量网络预测和目标的差异。我还将 设置batch_size
为 1。因此,在读取每个示例单词后,网络会重置其状态。
我的问题是我在概念上做对了吗?每当我进行训练时,准确率都会停留在 56% 左右。
请赐教。谢谢。