Par*_*jee 5 python embedding language-model lstm keras
我是Keras RNN结构中语言模型实现的新手.我有一个具有以下统计数据的离散单词数据集(不是来自单个段落),
现在,我想构建一个接受角色并预测单词中下一个角色的模型.我填写了所有单词,以便它们具有相同的长度.所以我的输入是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%左右.
请赐教.谢谢.
据我所知,结构是基本的,可能在某种程度上起作用.我有一些建议
在TimeDistributed图层中,您应该添加一个softmax广泛使用的激活函数multi-classification.而现在在你的结构中,输出是不受限制的,并且它不直观,因为你的目标只是一个热点.
通过softmax功能,您可以将损失更改为
cross-entropy增加正确类别的概率并减少其他类别.这更合适.
你可以尝试一下.对于更有用的模型,您可以尝试遵循Pytorch教程中给出的结构.谢谢.
| 归档时间: |
|
| 查看次数: |
3893 次 |
| 最近记录: |