首页 > 解决方案 > 文本嵌入层后池化层的目的

问题描述

我正在关注 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)
])

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

标签: tensorflowmachine-learningkerasdeep-learningnlp

解决方案


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

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

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

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


推荐阅读