python - keras中的Flatten()和GlobalAveragePooling2D()有什么区别

标签 python tensorflow keras deep-learning keras-layer

我想将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/

相关文章:

Python 单元测试(使用 SQLAlchemy)不写入/更新数据库?

python - Gekko非线性优化,目标函数错误

python - seaborn 是否计算预测(不是置信度)带?

tensorflow - 基于过去和 future 值的每个时间序列步骤的二元分类

python - 使用 python 和 numpy 加载文件的最快方法是什么?

tensorflow - 由于 ImportError : cannot import name 'keras_export' from 'tensorflow.python.util.tf_export' 无法运行 anpose

python - 如何使用Python和Selenium库与深度嵌套的 'input' html对象交互

tensorflow - TensorBoard 启动但未在浏览器中显示

python - 将 TensorFlow 教程转换为使用我自己的数据

dataframe - 神经网络摘要到数据框