【问题标题】:Purpose of pooling layer after text embedding layer文本嵌入层后池化层的目的
【发布时间】:2020-03-26 01:15:23
【问题描述】:

我正在关注 tensorflow 网站 (https://www.tensorflow.org/tutorials/text/word_embeddings#create_a_simple_model) 上的教程来学习词嵌入,我的困惑是在嵌入层之后有一个 Globalaveragepooling 层的目的,如下所示:

model = keras.Sequential([
  layers.Embedding(encoder.vocab_size, embedding_dim),
  layers.GlobalAveragePooling1D(),
  layers.Dense(16, activation='relu'),
  layers.Dense(1)
])

我了解池的含义以及它是如何完成的。如果有人能解释为什么我们需要一个池化层,以及如果我们不使用它会发生什么变化,我将不胜感激。

【问题讨论】:

    标签: tensorflow machine-learning keras deep-learning nlp


    【解决方案1】:

    本教程的目的是让您通过一个简单的玩具任务来理解词嵌入:二元情感分析。

    首先,它们让您编写一个简单的模型:取一个句子中所有嵌入的平均值,并添加一个前馈神经网络来对该聚合输入进行分类。 GlobalAveragePooling1D 进行此平均。

    显然,在现实世界中,您希望使用更复杂的模型,例如 RNN、LSTM、双向模型、基于 atrous-convolution 的模型或 Transformer,但这不是本教程的重点。

    他们提到的“简单模型”是一个前馈神经网络,它需要一个固定的输入维度,所以当您有可变长度的顺序数据时,您需要以某种方式解决这个问题:平均、填充、裁剪等。在这里他们平均有了这个GlobalAveragePooling1D

    【讨论】:

    • 通过取所有嵌入的平均值,您的意思是我们正在取句子中所有单词的嵌入的平均值以得出句子的“平均含义”?另外,你能添加一些关于每一层的维度以及维度如何从第一层传递到最后一层的细节吗?
    • 想轻推你,如果你能看到我最后的评论。感谢您的宝贵时间。
    猜你喜欢
    • 2020-04-05
    • 2020-12-10
    • 2018-07-26
    • 2016-06-03
    • 2022-01-05
    • 2019-05-06
    • 2021-01-20
    • 2020-04-18
    • 1970-01-01
    相关资源
    最近更新 更多