我在尝试使用Keras构建一个分类模型。我的数据包含一些数值特征和一些文本特征。这里的文本特征指的是评论或类似的东西。数值特征包括类别、年龄等。
我想将文本特征传递给一个嵌入层,然后再传递到一个LSTM层。数值特征需要传递给一系列的密集层。之后需要将这两个层的输出进行拼接。接着使用一个密集层来生成输出结果。
我如何在Keras中实现这种类型的模型?
或者,是否有其他方法可以同时在模型中使用数值特征和基于文本的特征?
回答:
使用Keras的函数式API实现这样的网络是相当容易的。假设你已经定义了两个顺序模型来处理你的文本和数值特征,你可以然后合并输出并继续添加更多的层:
txt_input = keras.layers.Input(shape=(n,))txt_feat = text_network(txt_input)num_input = keras.layers.Input(shape=(m,))num_feat = num_network(input2)concatinated = keras.layers.Concatenate()([txt_feat, num_feat])out = keras.layers.Dense(nodes)(concatinated)model = keras.models.Model(inputs=[input1, input2], outputs=out)
你也可以使用Keras中的其他类型的合并层来进行不同的合并方式。