【问题标题】:Unable to connect Lambda Layer in Keras directly to Flatten Layer without an exception. Why?无法毫无例外地将 Keras 中的 Lambda 层直接连接到 Flatten 层。为什么?
【发布时间】:2016-05-04 19:03:59
【问题描述】:

系统:

  • Keras 1.0.1
  • Theano 0.8.2

我有一个非常简单的函数:

from keras import backend as kback

def ave_embed(xval):
    return kback.mean(xval, axis=1)

我在 Keras Lambda 层中使用它,然后是 Flatten 层:

model.add(Lambda(ave_embed, output_shape=(d, 1)))
model.add(Flatten())

但是,当我编译模型时,出现以下错误:

Exception: Input 0 is incompatible with layer flatten_1: expected ndim >= 3, found ndim=2

我通过以下方式修复它:

model.add(Lambda(ave_embed, output_shape=(d, 1)))
model.add(Reshape(d,1))
model.add(Flatten())

谁能解释异常的原因?看起来我正在对应该已经是该形状的输出应用 reshape。

【问题讨论】:

    标签: python neural-network keras


    【解决方案1】:

    看起来我正在对应该已经是该形状的输出应用 reshape。

    你是对的!

    如果您有 3d 输入并在第二维 (kback.mean(xval, axis=1)) 上取平均值,您的 Lambda 层将为您输出 2d 张量。

    要使Lambda 层和Flatten 层的组合起作用,您至少应该有一个 4D 输入。

    您只需删除您的Flatten 层即可使其正常工作。 添加Reshape 层和维度使您的Flatten 层的输入张量为 3d,但之后您会立即展平不必要的维度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-28
      • 2017-02-08
      • 1970-01-01
      • 2022-06-13
      • 2017-12-14
      • 1970-01-01
      • 2020-05-29
      相关资源
      最近更新 更多