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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我们可以在神经网络中组合嵌入层和常规层吗?相关的知识,希望对你有一定的参考价值。

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

答案

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

另一答案

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


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

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

以上是关于我们可以在神经网络中组合嵌入层和常规层吗?的主要内容,如果未能解决你的问题,请参考以下文章

手写数字识别——基于全连接层和MNIST数据集

我可以在 Maven 的配置文件中使用叠加层吗? [关闭]

服务层模式 - 我们可以在特定情况下避免服务层吗?

CAD中能新建图层吗

计网:运输层

Keras 序列模型输入层