我想将 ConvLSTM 和 Conv2D 的输出传递到 Keras 中的密集层,使用全局平均池和展平之间的区别是什么?两者都适用于我的情况。
model.add(ConvLSTM2D(filters=256,kernel_size=(3,3)))
model.add(Flatten())
# or model.add(GlobalAveragePooling2D())
model.add(Dense(256,activation='relu'))
原文由 user239457 发布,翻译遵循 CC BY-SA 4.0 许可协议
两者似乎都有效并不意味着它们的作用相同。
Flatten 会将任意形状的张量转换为一维张量(加上样本维度),但将所有值保留在张量中。例如,张量 (samples, 10, 20, 1) 将被展平为 (samples, 10 * 20 * 1)。
GlobalAveragePooling2D 做了一些不同的事情。它在空间维度上应用平均池化,直到每个空间维度为一个,并保持其他维度不变。在这种情况下,值不会保留为平均值。例如,张量 (samples, 10, 20, 1) 将输出为 (samples, 1, 1, 1),假设第 2 和第 3 维是空间维度(最后是通道)。