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

ResNet50迁移学习时global_average_pooling2d层维度不匹配报错如何解决?

错误原因

你在初始化ResNet50时设置了pooling='avg'参数,该参数会让基础模型输出前自动执行全局平均池化操作,最终base_model.output的输出形状为(None, 2048),是2维张量。而你后续又添加了GlobalAveragePooling2D()层,该层要求输入必须是4维张量(形状为(批次大小, 高度, 宽度, 通道数)),两者维度不匹配,因此触发报错。

修复方案

两种方案任选其一即可正常运行:

  • 方案1:移除ResNet50初始化时的pooling='avg'参数,保留后续的GlobalAveragePooling2D()层。修改后的基础模型初始化代码为:
base_model = ResNet50(include_top = False, weights = 'imagenet')
  • 方案2:移除后续单独添加的GlobalAveragePooling2D()层,直接用base_model.output接入全连接层。修改后的模型构建部分代码为:
base_model = ResNet50(include_top = False, weights = 'imagenet', pooling='avg')
x = base_model.output
x = Dense(1024, activation = 'relu')(x)
predictions = Dense(train_generator.num_classes, activation = 'softmax')(x)
model = Model(inputs = base_model.input, outputs = predictions)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:03:00