【发布时间】: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