【问题标题】:TimeDistributed(GlobalAveragePooling2D()) vs TimeDistributed(Flatten())TimeDistributed(GlobalAveragePooling2D()) 与 TimeDistributed(Flatten())
【发布时间】:2022-10-20 20:47:53
【问题描述】:

对于图像分类任务,我首先构建了一个 CNN 模型,当我使用 GlobalAveragePooling2D() 比 Flatten() 时,它给出了更高的准确度。

现在我想在我的模型中添加 LSTM 层,TimeDistributed(Flatten()) 在 LSTM 层之前工作正常但是当我用 TimeDistributed(GlobalAveragePooling2D()) 替换它时,我得到了错误:

Input 0 of layer "global_average_pooling2d" is incompatible with the layer: expected ndim=4, found ndim=3. Full shape received: (None, 7, 1280)

如何解决此错误?

【问题讨论】:

  • 检查每一层的输出和输入形状。
  • 请提供足够的代码,以便其他人可以更好地理解或重现该问题。

标签: python keras conv-neural-network lstm flatten


【解决方案1】:

GlobalAveragePooling2D() 接受具有形状 (batch_size, rows, cols, channels) 或具有根据 Keras 文档的形状 (batch_size, channels, rows, cols) 的 4D 张量。
这里,输入形状是 (None, 7, 1280)。所以输入维度(ndim)是3。
但预期的形状就像 input_shape = (2, 4, 5, 3) - ndim=4。
所以查看GlobalAveragePooling2D() 的输入张量。

【讨论】:

    猜你喜欢
    • 2017-07-12
    • 1970-01-01
    • 2021-10-12
    • 2017-11-03
    • 2019-05-09
    • 2022-06-10
    • 2017-10-01
    • 2019-01-31
    • 2018-04-04
    相关资源
    最近更新 更多