embedding_dim=16

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

GlobalAveragePooling1D: return a fixed-length output vector for each example by averaging over the steps dimension. This allows the model to handle input of variable length, in the simplest way possible.

Embedding输出的文本数据batch_size * max_len * embedding_size的合并 -> 全局平均池化操作GlobalAveragePooling1D

输入数据:(batch-size, steps, features)。是经过embedding层的稠密矩阵,steps是文本中tokens的个数(变长),features是embedding-dim的维度。

输出数据:(batch-size, features)。对于每一个feature map即一条文本语句的embedding矩阵,按照steps方向求平均,embedding矩阵被池化为embedding-dim维度的向量,来表示本条文本语句。

优点:解决本文语句的变长问题

缺点:

  • 信息损失,由于是均值降维且padding噪音稀释数据。

  • 无效计算过多,由于padding。

解决方法:循环神经网络RNN

Share on: TwitterFacebookEmail

Comments


Related Posts


Published

Category

NLP

Tags

Contact