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

问题描述 投票:-1回答:2

我试图使用神经网络使用Keras进行二进制分类问题。我是整个神经网络领域的新手。我喜欢做的是拥有一个网络,其中包含某些功能的嵌入层,但是其他功能的常规输入层。例如,想象一下我想使用用户ID作为进入嵌入层的输入,其他所有内容都转到常规输入层。我知道我的问题更具概念性而非技术性,所以我想问这是否可以在Keras或任何其他框架或工具中实现神经网络。

tensorflow neural-network keras deep-learning
2个回答
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()

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

enter image description here


0
投票

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


基本上,在这样的架构中,你有两个神经组件:

  • 一个特征提取器,它将查看原始数据并生成输出,具有您选择的维度
  • 一个分类器,它将特征作为输入(来自特征提取器的特征,与您自己的工程特征连接)并生成分类分布
© www.soinside.com 2019 - 2024. All rights reserved.