如何计算单词手套嵌入句子的均值
how to calculate mean of words' glove embedding in a sentence
我已经下载了手套训练矩阵并在 Keras 层中使用它。但是,我需要句子嵌入来完成另一项任务。
我想计算该句子中所有词嵌入的平均值。
因为大约有 25000 个句子,最有效的方法是什么?
此外,我不想在 Keras 中使用 Lambda 层来获取它们的平均值。
最好的方法是使用 GlobalAveragePooling1D 层。它从具有形状 (n_sentence、n_token、emb_dim) 的嵌入层接收句子内的标记嵌入,并计算句子中出现的每个标记的平均值。结果的形状为 (n_sentence, emb_dim)
这里是代码示例
embedding_dim = 128
vocab_size = 100
sentence_len = 20
embedding_matrix = np.random.uniform(-1,1, (vocab_size,embedding_dim))
test_sentences = np.random.randint(0,vocab_size, (3,sentence_len))
inp = Input((sentence_len))
embedder = Embedding(vocab_size, embedding_dim,
trainable=False, weights=[embedding_matrix])(inp)
avg = GlobalAveragePooling1D()(embedder)
model = Model(inp, avg)
model.summary()
model(test_sentences) # the mean of all the word embeddings inside sentences
我已经下载了手套训练矩阵并在 Keras 层中使用它。但是,我需要句子嵌入来完成另一项任务。
我想计算该句子中所有词嵌入的平均值。
因为大约有 25000 个句子,最有效的方法是什么?
此外,我不想在 Keras 中使用 Lambda 层来获取它们的平均值。
最好的方法是使用 GlobalAveragePooling1D 层。它从具有形状 (n_sentence、n_token、emb_dim) 的嵌入层接收句子内的标记嵌入,并计算句子中出现的每个标记的平均值。结果的形状为 (n_sentence, emb_dim)
这里是代码示例
embedding_dim = 128
vocab_size = 100
sentence_len = 20
embedding_matrix = np.random.uniform(-1,1, (vocab_size,embedding_dim))
test_sentences = np.random.randint(0,vocab_size, (3,sentence_len))
inp = Input((sentence_len))
embedder = Embedding(vocab_size, embedding_dim,
trainable=False, weights=[embedding_matrix])(inp)
avg = GlobalAveragePooling1D()(embedder)
model = Model(inp, avg)
model.summary()
model(test_sentences) # the mean of all the word embeddings inside sentences