具有多个输入的神经网络(keras,文本分类)。

问题描述 投票:0回答:1

我是机器学习的新手,对神经网络做了一些实验,也做了一些研究.我目前正在尝试做一个用于假新闻检测的迷你网络.我的数据有几个特征(语句,说话人,日期,主题...),到目前为止,我已经尝试使用简单的虚假和真实语句的文本作为我的网络的输入,并使用手套来进行单词嵌入。我尝试了以下网络。

model = tf.keras.Sequential(
[
    # part 1: word and sequence processing
    tf.keras.layers.Embedding(embeddings_matrix.shape[0], embeddings_matrix.shape[1], weights=[embeddings_matrix], trainable=True),
    tf.keras.layers.Conv1D(128, 5, activation='relu'),
    tf.keras.layers.GlobalMaxPooling1D(),
    tf.keras.layers.Dropout(0.2),
    # part 2: classification
    tf.keras.layers.Dense(128, activation='relu'),
    tf.keras.layers.Dense(1, activation='sigmoid')
])
model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])

它给我带来了90%以上的训练准确率和65%左右的测试准确率.所以现在我想尝试增加两个特征,即: 扬声器,其内容为[名、姓]和 课题,可以只是一个或几个单词(如疫苗或政治-选举-2016),我决定将pad限制在5个单词。

现在我不知道如何将这些特征组合成一个模型。我不认为在其他特征上使用单词嵌入是有意义的。我是否必须建立3个不同的网络,并将它们连接成一个网络? 我可以将说话者和主题作为同一网络的输入吗? 如果我将它们连接起来,我将如何做到这一点(使用已经分类的输出作为输入?

python tensorflow keras neural-network text-processing
1个回答
0
投票

我过去曾这样连缀不同的输入类型。你不能再使用Sequential了,文档上写道

序列模型在以下情况下不适合使用。 - 您的模型有多个输入或多个输出 - 您的任何一个图层有多个输入或多个输出。

Keras.functional docs,有一节叫 "有多个输入和输出的模型",几乎就是你要问的问题。

然而,我写了一个答案说:不排除将你的结构化数据变成文本,比如在你当前的文本中预置 "xxxpeaker firstname lastname xxtopic topicname"。这可能对你目前的模型不起作用,因为你目前的模型似乎很小......但如果你要使用更大的模型,或者微调一个大型LM来完成任务,比如你使用fast.ai或huggingface,你几乎可以肯定有能力只从文本中学习它。

© www.soinside.com 2019 - 2024. All rights reserved.