小编Par*_*jee的帖子

了解Keras LSTM中的字符级嵌入

我是Keras RNN结构中语言模型实现的新手.我有一个具有以下统计数据的离散单词数据集(不是来自单个段落),

  1. 总字数:1953年
  2. 不同字符总数:33(包括START,END和*)
  3. 单词中的最大长度(字符数)为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'])
Run Code Online (Sandbox Code Playgroud)

作为示例,带有填充的单词"CAT"表示

输入网络 - START CAT END****(9个字符)

目标相同--- CAT END*****(9个字符)

因此,对于TimeDistributed输出,我正在测量网络预测和目标的差异.我还将其设置batch_size为1.因此,在读取每个样本字后,网络将重置其状态.

我的问题是我在概念上做得对吗?每当我进行训练时,准确度都会降低56%左右.

请赐教.谢谢.

python embedding language-model lstm keras

5
推荐指数
1
解决办法
3893
查看次数

标签 统计

embedding ×1

keras ×1

language-model ×1

lstm ×1

python ×1