我想将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'))
最佳答案
两者似乎都起作用并不意味着它们会做同样的事情。
Flatten将采用任何形状的张量,并将其转换为一维张量(加上样本尺寸),但将所有值保持在张量中。例如,张量(样本10、20、1)将被展平为(样本10 * 20 * 1)。
GlobalAveragePooling2D做一些不同的事情。它对空间维度应用平均池化,直到每个空间维度为一,其他维度保持不变。在这种情况下,值将不保持平均值。例如,假设第2维和第3维是空间(最后一个通道),则张量(样本10、20、1)将作为(样本1、1、1、1)输出。
关于tensorflow - keras中的Flatten()和GlobalAveragePooling2D()有什么区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49295311/