You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TensorFlow实现PSPNet金字塔池化模块时的尺寸匹配问题咨询

TensorFlow实现PSPNet金字塔池化模块时的尺寸匹配问题咨询

各位大佬好,我最近在TensorFlow里写PSPNet的代码,卡在金字塔池化模块的尺寸匹配上了,想请教下大家怎么解决。

先说说这个池化模块的逻辑:

  • 拿不同尺寸的池化核对输入特征图做平均池化
  • 接着过一个1x1卷积降维
  • 再用和池化核一样的尺寸做双线性插值上采样,把尺寸还原
  • 最后把所有分支的结果拼在一起

我自己写的代码是这样的:

def pyramid_pooling_module(x, pool_sizes):
    pool_outputs = []
    for pool_size in pool_sizes:
        pooled= layers.AveragePooling2D(pool_size)(x)
        pooled= layers.Conv2D(512, (1,1), padding='same')(pooled)
        pooled= layers.UpSampling2D(size=pool_size, interpolation='bilinear')(pooled)
        print(pool_size)
        pool_outputs.append(pooled)
    return layers.Concatenate()(pool_outputs)

我的输入特征图尺寸是(68, 120),用的池化核是1x1、2x2、3x3、6x6。但问题来了:用3x3和6x6池化的时候,因为输入尺寸没法被池化核整除,平均池化会做向下取整,导致上采样后的特征图尺寸和原输入对不上,最后拼接的时候直接报错。

比如输入68x120用3x3池化,池化后是22x40(68除以3取整是22,120除以3刚好是40),再用3x3上采样就得到66x120,比原输入少了2个像素;用6x6池化的话,池化后是11x20(68//6=11,120//6=20),上采样后也是66x120,和原尺寸差了2个像素,根本没法和其他分支拼起来。

现在我卡在这里好久了,有没有靠谱的办法能解决这个尺寸不匹配的问题,让所有分支的输出都能和原输入尺寸保持一致,顺利完成拼接呀?

备注:内容来源于stack exchange,提问作者Mel7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 11:53:00