【问题标题】:Loss on LSTM is starting with a low value and decreasing slowly until it stopsLSTM 上的损失从一个低值开始并缓慢下降直到停止
【发布时间】:2021-01-02 09:46:25
【问题描述】:

我有一个双向 LSTM 模型,它将文本中的单词作为输入,经过一个嵌入层、一个双向 LSTM 层,最后经过一个具有 4 个单元和一个 softmax 激活的 Dense 层。这个模型的目标是预测一个词是否是一个实体以及它是什么类型的实体。

在训练期间,模型以较低的验证和训练损失 (≈ 0.01) 开始,然后缓慢下降直至停滞。我的数据集中的文本的字长可能会有所不同,因此我决定将小于 2048 的示例填充到该值。超过 2048 个单词(

我使用 4 个召回函数(每个类一个)作为指标,尽管它们在开始时并没有给出糟糕的结果(最糟糕的一个是目前对其中一个类给出 75%),但它们没有随着时间的推移而改善。我的猜测是这是一个梯度消失的问题,因为序列长度非常大,但我不确定这一点。我将再次尝试使用大小 = 1024 的输入。我不认为数据集大小是这里的问题,因为我使用的训练数据集有大约 500k 示例,而验证数据集有 50k。如果还有什么需要补充的,请告诉我,我会尽快完成。

我的模型总结:

Layer (type)                 Output Shape              Param #
=================================================================
input_1 (InputLayer)         [(None, 2048)]            0
_________________________________________________________________
embedding (Embedding)        (None, 2048, 300)         15145800
_________________________________________________________________
bidirectional (Bidirectional (None, 2048, 256)         439296
_________________________________________________________________
dropout (Dropout)            (None, 2048, 256)         0
_________________________________________________________________
dense (Dense)                (None, 2048, 4)           1028
=================================================================
Total params: 15,586,124
Trainable params: 440,324
Non-trainable params: 15,145,800

【问题讨论】:

    标签: tensorflow nlp lstm recurrent-neural-network


    【解决方案1】:

    所以是的,将输入大小减少一半确实帮助我获得了更好的结果。但这还不够,我还必须添加一个新的双向 LSTM 层,并将两个层中的单元数量加倍(256 到 512)。

    【讨论】:

      猜你喜欢
      • 2018-09-04
      • 2018-11-27
      • 2021-07-17
      • 1970-01-01
      • 1970-01-01
      • 2020-01-26
      • 2020-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多