gpt4 book ai didi

keras - 文本特征多于1个时如何使用Keras Embedding层

转载 作者:行者123 更新时间:2023-12-04 15:29:59 25 4
gpt4 key购买 nike

我了解如何使用 Keras 嵌入层,以防在 IMDB 评论分类中存在单个文本特征。但是,当我遇到分类问题时,我很困惑如何使用嵌入层,其中有多个文本特征。例如,我有一个包含 2 个文本特征诊断文本和请求程序的数据集,标签是二进制类(1 表示已批准,0 表示未批准)。在下面的示例中,与 IMDB 数据集不同,x_train 有 2 列 Diagnosis 和 Procedure。我是否需要创建 2 个嵌入层,一个用于诊断和程序?如果是这样,需要更改哪些代码?

x_train = preprocessing.sequences.pad_sequences(x_train, maxlen=20)
x_test = preprocessing.sequences.pad_sequences(x_test, maxlen=20)
model = Sequential()
model.add(Embedding(10000,8,input_length=20)
model.add(Flatten())
model.add(Dense(1, activation='sigmoid')
model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['acc'])
model.fit(x_train, y_train, epochs=10, batch_size=32, validation_split=0.2)

最佳答案

您有一些选择,您可以将这两个功能合并为一个
并为它们创建一个嵌入。这是逻辑

all_features = np.hstack(X['diag'] + X['proc'])
X = pad_sequence(all_features, max_len)
# build model as usual, as you can see on a single embedding layer is
# needed.
或者您可以使用 Functional api并建立多输入模型
diag_inp = Input()
diag_emb = Embedding(512)(diag_input)
proc_inp = Input()
proc_emb = Embedding(512)(proc_input)

# concatenate them to makes a single vector per sample
merged = Concatenate()[diag_emb, proc_emb]
out = Dense(2, activation='sigmoid')(merged)
model = Model(inputs=[diag_inp, proc_inp], outputs=[out])
也就是说,您可以学习串联的嵌入,或者您可以学习
多个嵌入并在训练时连接它们。

关于keras - 文本特征多于1个时如何使用Keras Embedding层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49605800/

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