首页 > 解决方案 > GlobalAveragePooling1D 与 Lambda 层等价

问题描述

GlobalAveragePooling1D 层是否与使用自定义 Lambda 层计算平均值相同?

数据是时间的,所以 x 具有形状(批次、时间、特征)

x=keras.layers.Lambda(lambda x: keras.backend.mean(x, axis=1))(x)

相比

x=GlobalAveragePooling1D()(x)

由于我的结果差异很大,因此似乎缺少一些东西。

有任何想法吗?

标签: keras

解决方案


你可以自己测试一下...

X = np.random.uniform(0,1, (32,24,10)).astype('float32')

x_lambda = Lambda(lambda x: tf.keras.backend.mean(x, axis=1))(X)
x_pool = GlobalAveragePooling1D()(X)

tf.reduce_all(x_lambda == x_pool)
# <tf.Tensor: shape=(), dtype=bool, numpy=True>

他们是一样的


推荐阅读