gpt4 book ai didi

python - 了解 Keras LSTM 中的字符级嵌入

转载 作者:太空狗 更新时间:2023-10-30 01:05:26 24 4
gpt4 key购买 nike

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

  1. 单词样本总数:1953
  2. 不同字符总数:33(包括START、END和*)
  3. 一个单词的最大长度(字符数)为 10

现在,我想构建一个模型来接受一个字符并预测单词中的下一个字符。我填充了所有单词,使它们具有相同的长度。所以我的输入是形状为 1953 x 9 的 Word_input,目标是 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 C A T END * * * *(9 个字符)

相同的目标--- C A T END * * * * *(9个字符)

因此,对于 TimeDistributed 输出,我正在测量网络预测和目标的差异。我还将 batch_size 设置为 1。这样在读取每个示例单词后,网络会重置其状态。

我的问题是我这样做在概念上是否正确?每当我进行训练时,准确率都停留在 56% 左右。

请赐教。谢谢。

最佳答案

据我所知,该结构是基本结构,可能在一定程度上起作用。我有一些建议

  1. TimeDistributed层,你应该添加一个激活softmax 函数广泛应用于多分类。现在在你的结构中,输出是不受限制的,它不是直观,因为您的目标只是一个热点。

  2. 使用 softmax 函数,您可以将损失更改为 cross-entropy 这增加了正确类别的概率和 减少其他。比较合适。

你可以试试看。对于更有用的模型,您可以尝试以下结构,该结构在 Pytorch tutorial 中给出。 .谢谢。

enter image description here

关于python - 了解 Keras LSTM 中的字符级嵌入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44586333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com