我们可以在神经网络中组合嵌入层和常规层吗?
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()
这将为您提供以下图表:您有两个不同的输入,一个用于嵌入,第二个用于连续变量
另一答案
对的,这是可能的。在任何框架中。
基本上,在这样的架构中,你有两个神经组件:
- 一个特征提取器,它将查看原始数据并生成输出,具有您选择的维度
- 一个分类器,它将特征作为输入(来自特征提取器的特征,与您自己的工程特征连接)并生成分类分布
以上是关于我们可以在神经网络中组合嵌入层和常规层吗?的主要内容,如果未能解决你的问题,请参考以下文章