Keras序列模型的多个嵌入层

2024-04-26 05:09:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Keras(tensorflow后端)并想知道如何将多个嵌入层添加到Keras序列模型中。在

更具体地说,我的数据集中有几个列具有分类值,我考虑过使用一种热编码,但确定了分类项的数量为数百个,这导致列集过大且过于稀疏。在寻找解决方案时,我发现Keras的嵌入层似乎非常优雅地解决了这个问题。然而,大多数示例(以及Keras文档)都说明了一个非常简单的情况,即只有一个嵌入层。在

不幸的是,我不知道如何将多个嵌入层作为输入集成到单个模型中。在

我的代码看起来是这样的,但它不起作用,我猜测多个嵌入层按顺序操作(第一个嵌入层被输入,第二个嵌入层依此类推),而不是作为模型的多个输入源:

model = Sequential()
model.add(Embedding(500, 64, input_length=10))  # categorical col 1
model.add(Embedding(100, 64, input_length=10))  # categorical col 2
model.add(Embedding(500, 64, input_length=10))  # categorical col 3
model.add(Flatten... 
model.add(Dense...

我的问题是如何建立一个Keras序列模型,以便能够使用上面显示的三个嵌入层。在第一层和最后一层之间具体是什么:

^{pr2}$

我是在正确的轨道上,还是我的方法不正确,需要以不同的方式建立模型?如有任何建议/例子,我们将不胜感激!在


Tags: 数据模型add编码input数量modeltensorflow
1条回答
网友
1楼 · 发布于 2024-04-26 05:09:30

如果您切换到functional API,则可以很容易地完成此操作,首先进行读取。然后,可以使用表示不同列的多个输入构建模型:

col1, col2, col3 = Input(shape=(10,)), Input(shape=(10,)), ...
col1_embeded = Embedding(500, 64)(col1)
col2_embedded = Embedding(100, 64)(col2)
# ...

其要点是层是构建计算图的可调用对象。例如,还可以通过简单地使用同一个嵌入层在列之间共享嵌入层。在

相关问题 更多 >

    热门问题