【发布时间】:2019-05-31 13:59:47
【问题描述】:
在keras documentation 中声明嵌入层“只能用作模型中的第一层”。这对我来说毫无意义,我可能想在将输入传递给嵌入层之前对其进行整形/展平,但这是不允许的。为什么嵌入层只能作为第一层?
【问题讨论】:
标签: tensorflow keras
在keras documentation 中声明嵌入层“只能用作模型中的第一层”。这对我来说毫无意义,我可能想在将输入传递给嵌入层之前对其进行整形/展平,但这是不允许的。为什么嵌入层只能作为第一层?
【问题讨论】:
标签: tensorflow keras
"只能用作模型中的第一层。"这没有任何意义 对我来说
通常,嵌入层将离散值映射到连续值。在子序列层中,我们有连续的向量表示,这意味着不需要再次转换向量。
我可能想在将输入传递给之前对输入进行整形/展平 嵌入层
当然,您可以重塑或展平输入,但在大多数情况下是没有意义的。例如,假设我们有长度为 30 的句子,并希望在将它们传递给嵌入之前将它们展平:
input_layer = Input(shape=(30))
flatten = Flatten()(input_layer)
embedd = Embedding(1000, 100)(flatten)
在上面的例子中,flatten layer 完全没有效果。展平前后我们的向量大小为[batch, 30]。
让我们看另一个例子,假设我们的输入向量我们的 2D 具有 [batch, 30, 2] 的形状。扁平化输入后,向量的大小为[batch, 60]。我们可以将它们输入到 Embedding 层,但在大多数情况下,它没有任何意义。事实上,我们破坏了特征之间的逻辑关系。
input_layer = Input(shape=(30, 2))
flatten = Flatten()(input_layer)
embedd = Embedding(1000, 100)(flatten)
【讨论】: