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

Pytorch构建3D Dense Network时adaptive_avg_pool3d报output_size需为3错误

3D DenseNet自适应平均池化报错排查解决步骤

核心问题说明

你遇到的RuntimeError: adaptive_avg_pool3d: output_size must be 3报错,90%以上的概率是池化层的输入张量维度不符合要求,而非output_size参数本身的问题,按以下步骤排查:

步骤1:确认池化输入张量维度

在池化代码前插入维度打印语句,确认输入维度是否符合要求:

out = F.relu(features, inplace=True)
# 新增打印代码,运行后查看输出
print("池化输入维度:", out.shape, "张量维度数:", out.dim())
out = F.adaptive_avg_pool3d(input=out, output_size=(1,1,1))

F.adaptive_avg_pool3d要求输入必须是5维张量,格式为(batch_size, 通道数, 深度, 高度, 宽度),如果打印出来张量维度数是4,就说明你的特征输出丢失了深度维度,触发报错。

步骤2:修复维度丢失问题

如果确认是维度缺失,按以下两种情况处理:

  • 误删维度:检查特征提取模块的代码,是否在某层操作后用了squeeze()无差别删除了尺寸为1的深度维度,把对应操作改为指定维度删除,比如squeeze(4)只删最后一维,不要全局squeeze。
  • 深度维度被池化/卷积压到1后丢失:手动补回深度维度再调用池化:
    out = F.relu(features, inplace=True)
    # 4维张量补回深度维度,转为5维
    if out.dim() == 4:
        out = out.unsqueeze(2)
    out = F.adaptive_avg_pool3d(out, output_size=(1,1,1))
    

步骤3:兼容低版本PyTorch参数格式

PyTorch 1.6及更早版本对列表格式的output_size解析存在bug,优先使用元组格式传参,不要用列表[1,1,1],改为(1,1,1)即可。


内容的提问来源于stack exchange,提问作者Yan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:24:06