gpt4 book ai didi

python - 如何在 Keras 中使用附加功能和词嵌入?

转载 作者:太空狗 更新时间:2023-10-29 21:27:52 25 4
gpt4 key购买 nike

我正在使用 Keras 在数据集上训练 LSTM 模型,如下所示。变量“Description”是一个文本字段,“Age”和“Gender”是分类和连续字段。

Age, Gender, Description
22, M, "purchased a phone"
35, F, "shopping for kids"

我正在使用词嵌入将文本字段转换为词向量,然后将其输入到 keras 模型中。代码如下:

model = Sequential()
model.add(Embedding(word_index, 300, weights=[embedding_matrix], input_length=70, trainable=False))

model.add(LSTM(300, dropout=0.3, recurrent_dropout=0.3))
model.add(Dropout(0.6))
model.add(Dense(1))
model.add(Activation('sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics['accuracy'])

此模型运行成功,但我还想输入“年龄”和“性别”变量作为特征。还需要对代码进行哪些更改才能使用这些功能?

最佳答案

你想添加更多的输入层,这在顺序模型中是不可能的,你必须使用函数模型

from keras.models import Model

它允许您有多个输入和间接连接。

embed = Embedding(word_index, 300, weights=[embedding_matrix], input_length=70, trainable=False)
lstm = LSTM(300, dropout=0.3, recurrent_dropout=0.3)(embed)
agei = Input(shape=(1,))
conc = Concatenate()(lstm, agei)
drop = Dropout(0.6)(conc)
dens = Dense(1)(drop)
acti = Activation('sigmoid')(dens)

model = Model([embed, agei], acti)
model.compile(loss='binary_crossentropy', optimizer='adam', metrics['accuracy'])

您不能在 LSTM 层之前连接,因为它没有意义,而且在嵌入层之后您将拥有 3D 张量,并且输入是 2D 张量。

关于python - 如何在 Keras 中使用附加功能和词嵌入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49175961/

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