首页 > 解决方案 > 我们可以在神经网络中结合嵌入层和常规层吗?

问题描述

我正在尝试将神经网络用于使用 Keras 的二元分类问题。我是整个神经网络领域的新手。我喜欢做的是有一个网络,它有一些特征的嵌入层,但其他特征的常规输入层。例如,假设我想使用用户 ID 作为进入嵌入层的输入,而其他所有内容都进入常规输入层。我知道我的问题是概念性的而不是技术性的,所以我想问是否可以在 Keras 或任何其他用于实现神经网络的框架或工具中做到这一点。

标签: tensorflowneural-networkkerasdeep-learning

解决方案


是的,有可能,你必须使用功能 API

这是示例,请随时适应您的需求:

from keras.models import Model, Sequential
from keras.layers import Dense, Flatten, Concatenate, Reshape, Input, Dropout, Dense, BatchNormalization, Activation, concatenate 
from keras.layers.embeddings import Embedding

extraInput = Input((116,))
embed_input = Input((1,)) 

em_model = Embedding(10, 
                     5,
                    input_length=1, 
                    embeddings_initializer='uniform')(embed_input)

em_model = Reshape((5,))(em_model)
outputs = Concatenate(axis=1)([em_model,extraInput])

outputs = BatchNormalization(epsilon=1e-05, momentum=0.1) (outputs)

outputs = Dense(10, kernel_initializer='uniform', activation='relu')(outputs)
outputs = Dense(3, kernel_initializer='uniform', activation='relu')(outputs)
outputs = Dense(1)(outputs)
outputs = Activation('sigmoid')(outputs)

model = Model([embed_input, extraInput], outputs)
model.summary()

这将为您提供以下图表:您有两个不同的输入,一个用于嵌入,第二个用于继续变量

在此处输入图像描述


推荐阅读