我想将ConvLSTM和Conv2D的输出传递到Keras中的Dense Layer,使用全局平均池化和展平有什么区别 两者都适用于我的情况。
model.add(ConvLSTM2D(filters=256,kernel_size=(3,3)))
model.add(Flatten())
# or model.add(GlobalAveragePooling2D())
model.add(Dense(256,activation='relu'))
最佳答案
两者似乎都有效并不意味着它们的作用相同。
Flatten 将采用任何形状的张量并将其转换为一维张量(加上样本维度),但保留张量中的所有值。例如,张量 (samples, 10, 20, 1) 将被展平为 (samples, 10 * 20 * 1)。
GlobalAveragePooling2D 做了一些不同的事情。它对空间维度应用平均池化,直到每个空间维度为 1,并保持其他维度不变。在这种情况下,值不会按平均值保留。例如,假设第二维和第三维是空间维度(最后是 channel ),张量 (samples, 10, 20, 1) 将输出为 (samples, 1, 1, 1)。
关于python - keras中的Flatten()和GlobalAveragePooling2D()有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49295311/