【问题标题】:Keras: why must an embedding layer be used only as the first layer?Keras:为什么必须将嵌入层仅用作第一层?
【发布时间】:2019-05-31 13:59:47
【问题描述】:

keras documentation 中声明嵌入层“只能用作模型中的第一层”。这对我来说毫无意义,我可能想在将输入传递给嵌入层之前对其进行整形/展平,但这是不允许的。为什么嵌入层只能作为第一层?

【问题讨论】:

    标签: tensorflow keras


    【解决方案1】:

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

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

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

    当然,您可以重塑或展平输入,但在大多数情况下是没有意义的。例如,假设我们有长度为 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)
    

    【讨论】:

      猜你喜欢
      • 2018-08-12
      • 1970-01-01
      • 2019-09-15
      • 1970-01-01
      • 2019-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多