tensorflow - 文本嵌入层后池化层的目的
问题描述
我正在关注 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)
])
我了解池化的含义以及它是如何完成的。如果有人能解释为什么我们需要一个池化层,以及如果我们不使用它会发生什么变化,我将不胜感激。
解决方案
本教程的目的是让您通过一个简单的玩具任务来理解词嵌入:二元情感分析。
首先,他们让你编写一个简单的模型:取一个句子中所有嵌入的平均值,并添加一个前馈神经网络来对这个聚合输入进行分类。GlobalAveragePooling1D
做这个平均。
显然,在现实世界中,您希望使用更复杂的模型,如 RNN、LSTM、双向模型、基于 atrous-convolution 的模型或 Transformer,但这不是本教程的重点。
他们提到的“简单模型”是一个前馈神经网络,它需要一个固定的输入维度,所以当你有可变长度的序列数据时,你需要以某种方式解决这个问题:平均、填充、裁剪等。在这里他们用这GlobalAveragePooling1D
一层平均
推荐阅读
- javascript - 从Django中的render_field标签将字符串传递给javascript函数
- ruby-on-rails - 导入的 css 文件不会编译成 application.css 文件
- python - Google 语音转文本 Python 示例代码不起作用
- mysql - 休眠异常:从 mysql 迁移到 oracle 11g db 时
- html - CSS网格行灵活性问题
- vba - 如何在 VBA 中使用索引/匹配设置数组公式以获取第一个匹配单元格
- c - mm_struct 中的 cpumask 是什么
- python - 正则表达式在恰好两个正斜杠之后匹配字符串
- android-notifications - Android 9 中未显示通知
- javascript - Stripe Node js 向客户收费