我们可以在神经网络中结合使用嵌入层和常规层吗?

时间:2018-07-03 22:22:57

标签: tensorflow neural-network keras deep-learning

我正在尝试使用神经网络解决使用Keras的二进制分类问题。我是整个神经网络领域的新手。我想做的是拥有一个网络,该网络的某些功能具有嵌入层,而其他功能具有常规输入层。例如,假设我想将用户ID用作去往嵌入层的输入,而其他所有内容都去往常规输入层。我知道我的问题是技术性的,而不是技术性的,所以我问这是否可以在Keras或任何其他实现神经网络的框架或工具中进行。

2 个答案:

答案 0 :(得分:1)

是的,您必须使用功能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()

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

enter image description here

答案 1 :(得分:0)

是的,有可能。在任何框架中。


基本上,在这样的体系结构中,您将具有两个神经组件:

  • 功能提取器,它可以查看原始数据并根据您选择的维度生成输出
  • 分类器,它将要素作为输入(来自要素提取器的要素,与您自己的工程要素相连)并产生分类分布