gpt4 book ai didi

python - 在 Keras 中对句子的词向量进行平均 - 预训练词嵌入

转载 作者:行者123 更新时间:2023-12-01 08:26:23 36 4
gpt4 key购买 nike

我是 Keras 新手。

我的目标是为推文创建用于情感分析的神经网络多分类

我在 Keras 中使用 Sequential 来构建我的模型。

我想在模型的第一层使用预训练的词嵌入,特别是gloVe

这是我目前的模型:

model = Sequential()
model.add(Embedding(vocab_size, 300, weights=[embedding_matrix], input_length=max_length, trainable=False))
model.add(LSTM(100, stateful=False))
model.add(Dense(8, input_dim=4, activation='relu'))
model.add(Dense(3, activation='softmax'))

embedding_matrix 由来自文件 glove.840B.300d.txt

的向量填充

由于我对神经网络模型的输入是句子(或推文),并且在查阅了一些理论之后,我想要嵌入层之后的层,在获取推文中的每个词向量之后, 平均句子的词向量

目前我使用的是LSTM,我想用平均技术或p-means这种技术来代替它。我无法在 keras 文档中找到此内容。

我不确定这是问这个问题的合适地方,但我们将不胜感激所有帮助。

最佳答案

您可以使用 Keras 后端的 mean 函数并将其包装在 Lambda 层中,以对单词的嵌入进行平均。

import keras
from keras.layers import Embedding
from keras.models import Sequential
import numpy as np
# Set parameters
vocab_size=1000
max_length=10
# Generate random embedding matrix for sake of illustration
embedding_matrix = np.random.rand(vocab_size,300)

model = Sequential()
model.add(Embedding(vocab_size, 300, weights=[embedding_matrix],
input_length=max_length, trainable=False))
# Average the output of the Embedding layer over the word dimension
model.add(keras.layers.Lambda(lambda x: keras.backend.mean(x, axis=1)))

model.summary()

给予:

_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
embedding_6 (Embedding) (None, 10, 300) 300000
_________________________________________________________________
lambda_6 (Lambda) (None, 300) 0
=================================================================
Total params: 300,000
Trainable params: 0
Non-trainable params: 300,000

此外,您可以使用 Lambda 层包装对 Keras 层中的张量进行操作的任意函数,并将其添加到您的模型中。如果您使用 TensorFlow 后端,您还可以访问 tensorflow 操作:

import tensorflow as tf    
model = Sequential()
model.add(Embedding(vocab_size, 300, weights=[embedding_matrix],
input_length=max_length, trainable=False))
model.add(keras.layers.Lambda(lambda x: tf.reduce_mean(x, axis=1)))
# same model as before

这可以帮助实现更多自定义平均功能。

关于python - 在 Keras 中对句子的词向量进行平均 - 预训练词嵌入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54217503/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com