Keras:为什么嵌入层只能用作第一层?

问题描述 投票:0回答:1

keras 文档 中指出嵌入层“只能用作模型中的第一层”。这对我来说没有意义,我可能想在将输入传递到嵌入层之前对其进行重塑/展平,但这是不允许的。为什么嵌入层必须仅用作第一层?

tensorflow keras
1个回答
3
投票

“只能用作模型中的第一层。”这没有意义 对我来说

通常,嵌入层将离散值映射为连续值。在子序列层中,我们有连续的向量表示,这意味着不需要再次转换向量。

我可能想在将输入传递给之前对其进行重塑/展平 嵌入层

当然,您可以重塑或展平输入,但在大多数情况下毫无意义。例如,假设我们有长度为 30 的句子,并且希望在将它们传递到嵌入之前将它们展平:

input_layer = Input(shape=(30))
flatten = Flatten()(input_layer)
embedd = Embedding(1000, 100)(flatten)

在上面的例子中,展平层根本没有任何效果。展平之前和之后我们的向量大小是

[batch, 30]

让我们看另一个例子,假设我们的输入是形状为 [batch, 30, 2] 的二维向量。将输入展平后,向量的大小为

[batch, 60]
。我们可以将它们输入 Embedding 层,但在大多数情况下,它没有任何意义。事实上,我们破坏了特征之间的逻辑关系。

input_layer = Input(shape=(30, 2))
flatten = Flatten()(input_layer)
embedd = Embedding(1000, 100)(flatten)
© www.soinside.com 2019 - 2024. All rights reserved.